packages feed

cmdargs 0.6.1 → 0.6.2

raw patch · 9 files changed

+128/−28 lines, 9 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ System.Console.CmdArgs.Implicit: helpArg :: [Ann] -> Ann
+ System.Console.CmdArgs.Implicit: verbosityArgs :: [Ann] -> [Ann] -> Ann
+ System.Console.CmdArgs.Implicit: versionArg :: [Ann] -> Ann

Files

Data/Generics/Any.hs view
@@ -89,11 +89,13 @@ recompose :: Any -> [Any] -> Any recompose (Any x) cs | null s = Any $ res `asTypeOf` x                      | otherwise = err-    where (res,s) = flip runState cs $ flip fromConstrM (D.toConstr x) $ do-                        cs <- get-                        if null cs then err else do-                            put $ tail cs-                            return $ fromAny $ head cs+    where (res,s) = runState (fromConstrM field $ D.toConstr x) cs++          field :: Data d => State [Any] d+          field = do cs <- get+                     if null cs then err else do+                         put $ tail cs+                         return $ fromAny $ head cs            err = error $ "Data.Generics.Any.recompose: Incorrect number of children to recompose, " ++                         ctor (Any x) ++ " :: " ++ show (Any x) ++ ", expected " ++ show (arity $ Any x) ++
System/Console/CmdArgs/Implicit/Ann.hs view
@@ -23,4 +23,7 @@     | ProgSummary String     | ProgProgram String     | ProgVerbosity+    | ProgHelpArg [Ann]+    | ProgVersionArg [Ann]+    | ProgVerbosityArgs [Ann] [Ann]       deriving (Eq,Ord,Show,Data,Typeable)
System/Console/CmdArgs/Implicit/Global.hs view
@@ -149,27 +149,38 @@ extraFlags p = p{progModes = map f $ progModes p}     where f m = m{modeFlags_ = modeFlags_ m ++ map (\x -> def{flagFlag=x, flagExplicit=True, flagGroup=grp}) flags}           grp = if length (progModes p) > 1 then Just commonGroup else Nothing-          flags = flagHelpFormat undefined : flagVersion vers : if progVerbosity p then flagsVerbosity verb else []-          vers x = x{cmdArgsVersion = Just $ progSumm p}+          flags = changeBuiltin (progHelpArg p) (flagHelpFormat $ error "flagHelpFormat undefined") +++                  changeBuiltin (progVersionArg p) (flagVersion vers) +++                  changeBuiltin (fst $ progVerbosityArgs p) loud +++                  changeBuiltin (snd $ progVerbosityArgs p) quiet+          [loud,quiet] = flagsVerbosity verb+          vers x = x{cmdArgsVersion = Just $ unlines $ progSumm p}           verb v x = x{cmdArgsVerbosity = Just v}  +changeBuiltin :: Maybe Builtin_ -> Flag a -> [Flag a]+changeBuiltin Nothing _ = []+changeBuiltin (Just (Builtin_ names explicit help)) x =[x+    {flagNames = names ++ if explicit then [] else flagNames x+    ,flagHelp = fromMaybe (flagHelp x) help}]++ setHelp :: Prog_ -> Mode (CmdArgs Any) -> Mode (CmdArgs Any) setHelp p = mapModes0 add ""     where         mapModes0 f pre m = f pre $ mapModes1 f pre m         mapModes1 f pre m = m{modeGroupModes = fmap (mapModes0 f (pre ++ head (modeNames m) ++ " ")) $ modeGroupModes m} -        add pre m = changeHelp m $ \hlp txt x -> x{cmdArgsHelp=Just $ showText txt $ msg hlp}-            where msg hlp = Line (progSumm p) : Line "" : helpText hlp (prepare m{modeNames = map (pre++) $ modeNames m})+        add pre m = changeHelp p m $ \hlp txt x -> x{cmdArgsHelp=Just $ showText txt $ msg hlp}+            where msg hlp = map Line (progSumm p) ++ Line "" : helpText hlp (prepare m{modeNames = map (pre++) $ modeNames m})          prepare = mapModes1 (\_ m -> m{modeGroupFlags = groupCommonHide $ modeGroupFlags m}) ""  -changeHelp :: Mode a -> (HelpFormat -> TextFormat -> a -> a) -> Mode a-changeHelp m upd = m{modeGroupFlags = fmap f $ modeGroupFlags m}-    where hlp = flagHelpFormat upd-          f flg = if flagNames hlp == flagNames flg then hlp else flg+changeHelp :: Prog_ -> Mode a -> (HelpFormat -> TextFormat -> a -> a) -> Mode a+changeHelp p m upd = m{modeGroupFlags = fmap f $ modeGroupFlags m}+    where hlp = changeBuiltin (progHelpArg p) $ flagHelpFormat upd+          f flg = if concatMap flagNames hlp == flagNames flg then head hlp else flg   ---------------------------------------------------------------------
System/Console/CmdArgs/Implicit/Local.hs view
@@ -5,7 +5,7 @@ --   constraints. module System.Console.CmdArgs.Implicit.Local(     local, err,-    Prog_(..), progSumm, Mode_(..), Flag_(..), isFlag_+    Prog_(..), progSumm, Builtin_(..), Mode_(..), Flag_(..), isFlag_     ) where  import System.Console.CmdArgs.Implicit.Ann@@ -22,15 +22,25 @@  data Prog_ = Prog_     {progModes :: [Mode_]-    ,progSummary :: Maybe String+    ,progSummary :: Maybe [String]     ,progProgram :: String     ,progHelp :: String -- only for multiple mode programs-    ,progVerbosity :: Bool+    ,progVerbosityArgs :: (Maybe Builtin_, Maybe Builtin_)+    ,progHelpArg :: Maybe Builtin_+    ,progVersionArg :: Maybe Builtin_     } deriving Show instance Default Prog_ where-    def = Prog_ def def def def def-progSumm x = fromMaybe ("The " ++ progProgram x ++ " program") $ progSummary x+    def = Prog_ def def def def def (Just def) (Just def)+progSumm x = fromMaybe ["The " ++ progProgram x ++ " program"] $ progSummary x +data Builtin_ = Builtin_+    {builtinNames :: [String]+    ,builtinExplicit :: Bool+    ,builtinHelp :: Maybe String+    } deriving Show+instance Default Builtin_ where+    def = Builtin_ def def def+ data Mode_ = Mode_     {modeFlags_ :: [Flag_]     ,modeMode :: Mode (CmdArgs Any)@@ -40,7 +50,7 @@     } deriving Show instance Default Mode_ where     def = Mode_ [] m def def def-        where m = Mode (toGroup []) [] undefined Right "" [] Nothing (toGroup [])+        where m = Mode (toGroup []) [] (error "Mode_ undefined") Right "" [] Nothing (toGroup [])  data Flag_     = Flag_@@ -57,7 +67,7 @@         }       deriving Show instance Default Flag_ where-    def = Flag_ "" undefined def def def+    def = Flag_ "" (error "Flag_ undefined") def def def  isFlag_ Flag_{} = True isFlag_ _ = False@@ -126,12 +136,26 @@ -- CAPTURE THE ANNOTATIONS  progAnn :: Ann -> Prog_ -> Prog_-progAnn (ProgSummary a) x = x{progSummary=Just a}+progAnn (ProgSummary a) x = x{progSummary=Just $ lines a} progAnn (ProgProgram a) x = x{progProgram=a}-progAnn ProgVerbosity x = x{progVerbosity=True}+progAnn ProgVerbosity x = x{progVerbosityArgs=let f sel = Just $ fromMaybe def $ sel $ progVerbosityArgs x in (f fst, f snd)} progAnn (Help a) x | length (progModes x) > 1 = x{progHelp=a}+progAnn (ProgHelpArg a) x = x{progHelpArg = builtinAnns (progHelpArg x) a}+progAnn (ProgVersionArg a) x = x{progVersionArg = builtinAnns (progVersionArg x) a}+progAnn (ProgVerbosityArgs a b) x = x{progVerbosityArgs=(builtinAnns (Just $ fromMaybe def $ fst $ progVerbosityArgs x) a, builtinAnns (Just $ fromMaybe def $ snd $ progVerbosityArgs x) b)} progAnn a x | length (progModes x) == 1 = x{progModes = map (modeAnn a) $ progModes x} progAnn a x = err "program" $ show a+++builtinAnns = foldl (flip builtinAnn)++builtinAnn :: Ann -> Maybe Builtin_ -> Maybe Builtin_+builtinAnn _ Nothing = Nothing+builtinAnn Ignore _ = Nothing+builtinAnn Explicit (Just x) = Just x{builtinExplicit=True}+builtinAnn (Name a) (Just x) = Just x{builtinNames=a : builtinNames x}+builtinAnn (Help a) (Just x) = Just x{builtinHelp=Just a}+builtinAnn a x = err "builtin" $ show a   modeAnn :: Ann -> Mode_ -> Mode_
System/Console/CmdArgs/Implicit/UI.hs view
@@ -167,3 +167,31 @@ --   Add @--verbose@ and @--quiet@ flags. verbosity :: Ann verbosity = ProgVerbosity+++-- | Modes: \"Customise the help argument.\"+--+--   Add extra options to a help argument, such as 'help', 'name', 'ignore' or 'explicit'.+--+-- > Sample{..} &= helpArg [explicit, name "h"]+helpArg :: [Ann] -> Ann+helpArg = ProgHelpArg+++-- | Modes: \"Customise the version argument.\"+--+--   Add extra options to a version argument, such as 'help', 'name', 'ignore' or 'explicit'.+--+-- > Sample{..} &= versionArg [ignore]+versionArg :: [Ann] -> Ann+versionArg = ProgVersionArg++-- | Modes: \"Customise the verbosity arguments.\"+--+--   Add extra options to a verbosity arguments (@--verbose@ and @--quiet@),+--   such as 'help', 'name', 'ignore' or 'explicit'. The verbose options come+--   first, followed by the quiet options.+--+-- > Sample{..} &= verbosityArgs [ignore] [name "silent", explicit]+verbosityArgs :: [Ann] -> [Ann] -> Ann+verbosityArgs = ProgVerbosityArgs
System/Console/CmdArgs/Test/Implicit/Diffy.hs view
@@ -29,7 +29,7 @@     isHelp ["create","--help"] []     isHelp ["diff","--help"] []     isHelpNot ["--help"] ["diffy"]-    isVersion ["--version"] "Diffy v1.0"+    isVersion ["--version"] "Diffy v1.0\n"     ["create"] === create     fails ["create","file1"]     fails ["create","--quiet"]
System/Console/CmdArgs/Test/Implicit/Maker.hs view
@@ -31,9 +31,9 @@     ,files = def &= args     } &= help "Build the project" &= auto -mode = cmdArgsMode $ modes [build,wipe,test_] &= help "Build helper program" &= program "maker" &= summary "Maker v1.0"+mode = cmdArgsMode $ modes [build,wipe,test_] &= help "Build helper program" &= program "maker" &= summary "Maker v1.0\nMake it" -mode_ = cmdArgsMode_ $ modes_ [build,wipe,test_] += help "Build helper program" += program "maker" += summary "Maker v1.0"+mode_ = cmdArgsMode_ $ modes_ [build,wipe,test_] += help "Build helper program" += program "maker" += summary "Maker v1.0\nMake it"   where     threads_ = threads := def += help "Number of threads to use" += name "j" += typ "NUM" @@ -57,6 +57,7 @@ test = do     let Tester{..} = testers "Maker" [mode,mode_]     [] === build+    isHelp ["--help"] ["Maker v1.0","Make it"]     isHelp ["-?=one"] ["Common flags:"]     isHelpNot ["-?=one"] ["  -d --debug  Debug build"]     isHelp ["-?=all"] ["maker [build] [OPTIONS] [ITEM]"]
System/Console/CmdArgs/Test/Implicit/Tests.hs view
@@ -9,11 +9,11 @@   test = test1 >> test2 >> test3 >> test4 >> test5 >> test6 >> test7 >> test8 >> test9 >> test10 >>-       test11 >> test12 >> test13+       test11 >> test12 >> test13 >> test14 >> test15 demos = zipWith f [1..]         [toDemo mode1, toDemo mode2, toDemo mode3, toDemo mode4, toDemo mode5, toDemo mode6         ,toDemo mode7, toDemo mode8, toDemo mode9, toDemo mode10, toDemo mode11, toDemo mode12-        ,toDemo mode13]+        ,toDemo mode13, toDemo mode14, toDemo mode15]     where f i x = x{modeHelp = "Testing various corner cases (" ++ show i ++ ")"}  @@ -242,3 +242,34 @@     fails ["test13a --bar13=1"]     ["test13a","--foo13=13"] === Test13A 13 (Left 1)     ["test13c","--foo13=13"] === Test13C 13++-- check a list becomes modes not an enum+data Test14 = Test14A | Test14B | Test14C deriving (Eq,Show,Data,Typeable)++mode14 = cmdArgsMode $ modes [Test14A, Test14B, Test14C]++test14 = do+    let Tester{..} = tester "Test14" mode14+    fails []+    ["test14a"] === Test14A+    fails ["--test14a"]++-- custom help flags+data Test15 = Test15 {test15a :: Bool} deriving (Eq,Show,Data,Typeable)++mode15 = cmdArgsMode $ Test15 (False &= name "help")+         &= helpArg [name "h", name "nohelp", explicit, help "whatever"] &= versionArg [ignore]+         &= verbosityArgs [ignore] [explicit,name "silent"]++test15 = do+    let Tester{..} = tester "Test15" mode15+    invalid $ \_ -> Test15 (False &= name "help")+    ["--help"] === Test15 True+    ["-t"] === Test15 True+    fails ["-?"]+    isHelp ["--nohelp"] ["  -h --nohelp  whatever"]+    isHelp ["-h"] []+    fails ["--version"]+    fails ["--verbose"]+    fails ["--quiet"]+    isVerbosity ["--help","--silent"] Quiet
cmdargs.cabal view
@@ -1,7 +1,7 @@ cabal-version:      >= 1.6 build-type:         Simple name:               cmdargs-version:            0.6.1+version:            0.6.2 license:            BSD3 license-file:       LICENSE category:           Console