fix preferred content check for 1 semitrusted or better copy
Let's make semitrusted+:1 mean that, since it cannot be expressed easily with the current syntax (could use (semitrusted:1 or trusted:1), but that does not scale to higher values than 2 copy, and also fails if I add more trust levels). Thanks to Andy for spotting this bug by just reading my blog.
This commit is contained in:
parent
b19bb77dd1
commit
a73de165f4
4 changed files with 16 additions and 10 deletions
9
Limit.hs
9
Limit.hs
|
@ -145,8 +145,8 @@ addCopies = addLimit . limitCopies
|
|||
|
||||
limitCopies :: MkLimit
|
||||
limitCopies want = case split ":" want of
|
||||
[v, n] -> case readTrustLevel v of
|
||||
Just trust -> go n $ checktrust trust
|
||||
[v, n] -> case parsetrustspec v of
|
||||
Just pred -> go n $ checktrust pred
|
||||
Nothing -> go n $ checkgroup v
|
||||
[n] -> go n $ const $ return True
|
||||
_ -> Left "bad value for copies"
|
||||
|
@ -160,8 +160,11 @@ limitCopies want = case split ":" want of
|
|||
us <- filter (`S.notMember` notpresent)
|
||||
<$> (filterM good =<< Remote.keyLocations key)
|
||||
return $ length us >= n
|
||||
checktrust t u = (== t) <$> lookupTrust u
|
||||
checktrust pred u = pred <$> lookupTrust u
|
||||
checkgroup g u = S.member g <$> lookupGroups u
|
||||
parsetrustspec s
|
||||
| "+" `isSuffixOf` s = (>=) <$> readTrustLevel (beginning s)
|
||||
| otherwise = (==) <$> readTrustLevel s
|
||||
|
||||
{- Adds a limit to skip files not believed to be present in all
|
||||
- repositories in the specified group. -}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue