git-annex/Command/Adjust.hs
Joey Hess 75be161574
remove git version check for adjusted branch
2686d2d7ea made git older than 2.5 not be
supported, so this check for an older version is not longer needed.

Sponsored-by: Kevin Mueller
2025-08-21 11:12:36 -04:00

74 lines
2.1 KiB
Haskell

{- git-annex command
-
- Copyright 2016-2018 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
module Command.Adjust where
import Command
import Annex.AdjustedBranch
cmd :: Command
cmd = notBareRepo $ noDaemonRunning $
command "adjust" SectionSetup "enter adjusted branch"
paramNothing (seek <$$> optParser)
optParser :: CmdParamsDesc -> Parser Adjustment
optParser _ =
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 =
flag' UnlockAdjustment
( long "unlock"
<> help "unlock annexed files"
)
<|> flag' LockAdjustment
( long "lock"
<> help "lock annexed files"
)
<|> flag' FixAdjustment
( long "fix"
<> help "fix symlinks to annnexed files"
)
presenceAdjustmentParser :: Parser PresenceAdjustment
presenceAdjustmentParser =
flag' HideMissingAdjustment
( long "hide-missing"
<> help "hide annexed files whose content is not present"
)
lockUnlockPresentAdjustmentParser :: Parser LockUnlockPresentAdjustment
lockUnlockPresentAdjustmentParser =
flag' UnlockPresentAdjustment
( long "unlock-present"
<> help "unlock files whose content is present; lock rest"
)
seek :: Adjustment -> CommandSeek
seek = commandAction . start
start :: Adjustment -> CommandStart
start adj =
starting "adjust" (ActionItemOther Nothing) (SeekInput []) $
next $ enterAdjustedBranch adj