allowing building with ghc 9.0.2.
* git-remote-annex: Fix bug that prevented using it with external special
remotes, leading to protocol error messages involving "GITMANIFEST".
+ * adjust: Allow any order of options when combining --hide-missing with
+ options like --unlock.
-- Joey Hess <id@joeyh.name> Thu, 17 Oct 2024 11:02:17 -0400
optParser :: CmdParamsDesc -> Parser Adjustment
optParser _ =
- (LinkAdjustment <$> linkAdjustmentParser)
- <|> (PresenceAdjustment <$> presenceAdjustmentParser <*> maybeLinkAdjustmentParser)
+ linkPresentAdjustmentParser
<|> (LockUnlockPresentAdjustment <$> lockUnlockPresentAdjustmentParser)
+
+linkPresentAdjustmentParser :: Parser Adjustment
+linkPresentAdjustmentParser = comb <$> some ps
+ where
+ ps = (LinkAdjustment <$> linkAdjustmentParser)
+ <|> (PresenceAdjustment <$> presenceAdjustmentParser <*> pure Nothing)
+ comb (LinkAdjustment _ : LinkAdjustment b : c) =
+ comb (LinkAdjustment b : c)
+ comb (PresenceAdjustment _a1 a2 : PresenceAdjustment b1 b2 : c) =
+ comb (PresenceAdjustment b1 (b2 <|> a2) : c)
+ comb (LinkAdjustment a : PresenceAdjustment b1 b2 : c) =
+ comb (PresenceAdjustment b1 (b2 <|> Just a) : c)
+ comb (PresenceAdjustment a1 _a2 : LinkAdjustment b : c) =
+ comb (PresenceAdjustment a1 (Just b) : c)
+ comb (a : _) = a
+ comb [] = error "internal"
linkAdjustmentParser :: Parser LinkAdjustment
linkAdjustmentParser =
<> help "fix symlinks to annnexed files"
)
-maybeLinkAdjustmentParser :: Parser (Maybe LinkAdjustment)
-maybeLinkAdjustmentParser = Just <$> linkAdjustmentParser <|> pure Nothing
-
presenceAdjustmentParser :: Parser PresenceAdjustment
presenceAdjustmentParser =
flag' HideMissingAdjustment