From 249e0861520a2904f70bf4b79a4ebddc009c3683 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 8 Jul 2015 16:58:54 -0400 Subject: converted fsck's options to optparse-applicative Global options and seeking and key options are still to be done. --- Command.hs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'Command.hs') diff --git a/Command.hs b/Command.hs index ec8ffadd9..e72bd1660 100644 --- a/Command.hs +++ b/Command.hs @@ -1,6 +1,6 @@ {- git-annex command infrastructure - - - Copyright 2010-2014 Joey Hess + - Copyright 2010-2015 Joey Hess - - Licensed under the GNU GPL version 3 or higher. -} @@ -8,6 +8,8 @@ module Command ( command, withParams, + cmdParams, + finalOpt, noRepo, noCommit, noMessages, @@ -36,16 +38,24 @@ import CmdLine.GitAnnex.Options as ReExported import qualified Options.Applicative as O {- Generates a normal Command -} -command :: String -> CommandSection -> String -> String -> (String -> CommandParser) -> Command +command :: String -> CommandSection -> String -> CmdParamsDesc -> (CmdParamsDesc -> CommandParser) -> Command command name section desc paramdesc mkparser = Command [] commonChecks False False name paramdesc section desc (mkparser paramdesc) Nothing -{- Option parser that takes all non-option params as-is. -} -withParams :: (CmdParams -> v) -> String -> O.Parser v -withParams mkseek paramdesc = mkseek <$> O.many cmdparams - where - cmdparams = O.argument O.str (O.metavar paramdesc) +{- Simple option parser that takes all non-option params as-is. -} +withParams :: (CmdParams -> v) -> CmdParamsDesc -> O.Parser v +withParams mkseek paramdesc = mkseek <$> cmdParams paramdesc + +{- Parser that accepts all non-option params. -} +cmdParams :: CmdParamsDesc -> O.Parser CmdParams +cmdParams paramdesc = O.many (O.argument O.str (O.metavar paramdesc)) + +{- Makes an option parser that is normally required be optional; + - its switch can be given zero or more times, and the last one + - given will be used. -} +finalOpt :: O.Parser a -> O.Parser (Maybe a) +finalOpt = lastMaybe <$$> O.many {- Indicates that a command doesn't need to commit any changes to - the git-annex branch. -} -- cgit v1.2.3