cmdargs 0.5 → 0.6
raw patch · 8 files changed
+34/−14 lines, 8 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ System.Console.CmdArgs.Implicit: ignore :: Ann
Files
- System/Console/CmdArgs/Implicit.hs +1/−1
- System/Console/CmdArgs/Implicit/Ann.hs +1/−0
- System/Console/CmdArgs/Implicit/Global.hs +2/−1
- System/Console/CmdArgs/Implicit/Local.hs +6/−4
- System/Console/CmdArgs/Implicit/UI.hs +10/−0
- System/Console/CmdArgs/Test/Implicit/Maker.hs +2/−1
- System/Console/CmdArgs/Test/Implicit/Tests.hs +11/−6
- cmdargs.cabal +1/−1
System/Console/CmdArgs/Implicit.hs view
@@ -16,7 +16,7 @@ * The help message: 'help', 'typ', 'details', 'summary', 'program', 'groupname' - * Flag behaviour: 'opt', 'enum', 'verbosity'+ * Flag behaviour: 'opt', 'enum', 'verbosity', 'ignore' * Flag name assignment: 'name', 'explicit'
System/Console/CmdArgs/Implicit/Ann.hs view
@@ -9,6 +9,7 @@ = Help String | Name String | Explicit+ | Ignore | GroupName String | FlagOptional String
System/Console/CmdArgs/Implicit/Global.hs view
@@ -26,7 +26,8 @@ collapse :: Prog_ -> Mode (CmdArgs Any) collapse x | length ms == 1 = (head ms){modeNames=[progProgram x]} | length auto > 1 = err "prog" "Multiple automatic modes"- | otherwise = (head $ map zeroMode auto ++ map emptyMode ms){modeNames=[progProgram x], modeGroupModes = toGroup ms}+ | otherwise = (head $ map zeroMode auto ++ map emptyMode ms)+ {modeNames=[progProgram x], modeGroupModes = toGroup ms, modeHelp = progHelp x} where ms = map collapseMode $ progModes x auto = [m | (m,True) <- zip ms $ map modeDefault $ progModes x]
System/Console/CmdArgs/Implicit/Local.hs view
@@ -79,19 +79,21 @@ prog_ :: Capture Ann -> Prog_ prog_ (Ann a b) = progAnn a $ prog_ b-prog_ (Many xs) = def{progModes=map mode_ xs, progProgram=prog}+prog_ (Many xs) = def{progModes=concatMap mode_ xs, progProgram=prog} where prog = map toLower $ typeShell $ fromCapture $ head xs prog_ x@Ctor{} = prog_ $ Many [x] prog_ x = err "program" $ show x -mode_ :: Capture Ann -> Mode_-mode_ (Ann a b) = modeAnn a $ mode_ b-mode_ o@(Ctor x ys) = withMode def{modeFlags_=concat $ zipWith flag_ (fields x) ys} $ \x -> x{modeValue=embed $ fromCapture o}+mode_ :: Capture Ann -> [Mode_]+mode_ (Ann Ignore _) = []+mode_ (Ann a b) = map (modeAnn a) $ mode_ b+mode_ o@(Ctor x ys) = [withMode def{modeFlags_=concat $ zipWith flag_ (fields x) ys} $ \x -> x{modeValue=embed $ fromCapture o}] mode_ x = err "mode" $ show x flag_ :: String -> Capture Ann -> [Flag_]+flag_ name (Ann Ignore _) = [] flag_ name (Ann a b) = map (flagAnn a) $ flag_ name b flag_ name (Value x) = [def{flagField=name, flagFlag = remap embed reembed $ value_ name x}] flag_ name x@Ctor{} = flag_ name $ Value $ fromCapture x
System/Console/CmdArgs/Implicit/UI.hs view
@@ -152,6 +152,16 @@ explicit = Explicit +-- | Flag/Mode: \"Ignore this field, don't let the user set it.\"+--+-- A mode or field is not dealt with by CmdArgs.+--+-- > {hello = def, extra = def &= ignore}+-- > --hello=VALUE+ignore :: Ann+ignore = Ignore++ -- | Modes: \"My program needs verbosity flags.\" -- -- Add @--verbose@ and @--quiet@ flags.
System/Console/CmdArgs/Test/Implicit/Maker.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE DeriveDataTypeable, RecordWildCards #-}-{-# OPTIONS_GHC -fno-cse -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-cse -fno-warn-unused-binds -fno-warn-missing-fields #-} module System.Console.CmdArgs.Test.Implicit.Maker where import System.Console.CmdArgs import System.Console.CmdArgs.Test.Implicit.Util@@ -61,6 +61,7 @@ isHelpNot ["-?=one"] [" -d --debug Debug build"] isHelp ["-?=all"] ["maker [build] [OPTIONS] [ITEM]"] isHelp ["build","-?=one"] ["maker [build] [OPTIONS] [ITEM]"]+ isHelp ["-?=one"] [" Build helper program"] ["build","foo","--profile"] === build{files=["foo"],method=Profile} ["foo","--profile"] === build{files=["foo"],method=Profile} ["foo","--profile","--release"] === build{files=["foo"],method=Release}
System/Console/CmdArgs/Test/Implicit/Tests.hs view
@@ -227,13 +227,18 @@ ["test12b"] === Test12B ["t"] === Test12B --- #350, check help gets attached to modes properly-data Test13 = Test13A | Test13B deriving (Eq,Show,Data,Typeable) -mode13 = cmdArgsMode_ $ modes_ [record Test13A [] += help "foo", record Test13B [] += help "bar"]- += help "all"+-- the ignore annotation+data Test13 = Test13A {foo13 :: Int, bar13 :: Either Int Int}+ | Test13B {foo13 :: Int}+ | Test13C {foo13 :: Int}+ deriving (Eq,Show,Data,Typeable) +mode13 = cmdArgsMode $ modes [Test13A 1 (Left 1 &= ignore), Test13B 1 &= ignore, Test13C{}]+ test13 = do let Tester{..} = tester "Test13" mode13- fails []- ["test13a"] === Test13A+ fails ["test13b"]+ fails ["test13a --bar13=1"]+ ["test13a","--foo13=13"] === Test13A 13 (Left 1)+ ["test13c","--foo13=13"] === Test13C 13
cmdargs.cabal view
@@ -1,7 +1,7 @@ cabal-version: >= 1.6 build-type: Simple name: cmdargs-version: 0.5+version: 0.6 license: BSD3 license-file: LICENSE category: Console