diff options
Diffstat (limited to 'Command/Config.hs')
-rw-r--r-- | Command/Config.hs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Command/Config.hs b/Command/Config.hs new file mode 100644 index 000000000..690c8d288 --- /dev/null +++ b/Command/Config.hs @@ -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 |