config: New command for storing configuration in the git-annex branch.
Any config names can be set using this; git-annex commands will only look at specific ones that make sense and are worth the overhead of querying the branch. This might also be useful for storing whatever other config-type stuff the user might want to shove into the git-annex branch. This commit was sponsored by Jochen Bartl on Patreon.
This commit is contained in:
parent
26d23e38f1
commit
339464e847
11 changed files with 190 additions and 2 deletions
65
Command/Config.hs
Normal file
65
Command/Config.hs
Normal file
|
@ -0,0 +1,65 @@
|
|||
{- git-annex command
|
||||
-
|
||||
- Copyright 2017 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Command.Config where
|
||||
|
||||
import Command
|
||||
import Logs.Config
|
||||
|
||||
cmd :: Command
|
||||
cmd = command "config" SectionSetup "configuration stored in git-annex branch"
|
||||
paramNothing (seek <$$> optParser)
|
||||
|
||||
data Action
|
||||
= SetConfig ConfigName ConfigValue
|
||||
| GetConfig ConfigName
|
||||
| UnsetConfig ConfigName
|
||||
|
||||
type Name = String
|
||||
type Value = String
|
||||
|
||||
optParser :: CmdParamsDesc -> Parser Action
|
||||
optParser _ = setconfig <|> getconfig <|> unsetconfig
|
||||
where
|
||||
setconfig = SetConfig
|
||||
<$> strOption
|
||||
( long "set"
|
||||
<> help "set configuration"
|
||||
<> metavar paramName
|
||||
)
|
||||
<*> strArgument
|
||||
( metavar paramValue
|
||||
)
|
||||
getconfig = GetConfig <$> strOption
|
||||
( long "get"
|
||||
<> help "get configuration"
|
||||
<> metavar paramName
|
||||
)
|
||||
unsetconfig = UnsetConfig <$> strOption
|
||||
( long "unset"
|
||||
<> help "unset configuration"
|
||||
<> metavar paramName
|
||||
)
|
||||
|
||||
seek :: Action -> CommandSeek
|
||||
seek (SetConfig name val) = commandAction $ do
|
||||
showStart name val
|
||||
next $ next $ do
|
||||
setGlobalConfig name val
|
||||
return True
|
||||
seek (UnsetConfig name) = commandAction $ do
|
||||
showStart name "unset"
|
||||
next $ next $ do
|
||||
unsetGlobalConfig name
|
||||
return True
|
||||
seek (GetConfig name) = commandAction $ do
|
||||
mv <- getGlobalConfig name
|
||||
case mv of
|
||||
Nothing -> stop
|
||||
Just v -> do
|
||||
liftIO $ putStrLn v
|
||||
stop
|
Loading…
Add table
Add a link
Reference in a new issue