úÎ!X@R]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\IA set of combinators for constructing and executing command line programs(c) Samuel Schlesinger 2020MITsgschlesinger@gmail.com experimentalPOSIX, WindowsNone"#%&'-.147;<=?HMSUVXkPH commander-cliÍThe type of middleware, which can transform interpreted command line programs by meddling with arguments, options, or flags, or by adding effects for every step. You can also change the underlying monad. commander-cliDThis is the workhorse of the library. Basically, it allows you to  your ]& representation of your program as a   and pump the { through it until you've processed all of the arguments, options, and flags that you have specified must be used in your ]. You can think of ]4 as a useful syntax for command line programs, but  @ as the semantics of that program. We also give the ability to  ]j actions between monads if you can uniformly turn computations in one into another. All of the different U are also stored to give a primitive form of automatically generated documentation. commander-cli This is the  that the  m library uses for its role in this library. It is not inlined, because that does nothing but obfuscate the   monad. It consists of , , and  .  commander-cliA  M action is a metaphor for a military commander. At each step, we have a new  ( to take, or we could have experienced  , or we can see  r. While a real life commander worries about moving his troops around in order to achieve a victory in battle, a  ã worries about iteratively transforming a state to find some value. We will deal with the subset of these actions where every function must decrease the size of the state, as those are the actions for which this is a monad. commander-cliÿ The type level combining combinator, taking two program types as input, and being interpreted as a program which attempts to run the first command line program and, if parsing its flags, subprograms, options or arguments fails, runs the second, otherwise failing. commander-climThe type level flag combinator, taking a name as input, allowing your program to take flags with the syntax ~flag. commander-clilThe type level raw monadic program combinator, allowing a command line program to just do some computation. commander-clinThe type level program sequencing combinator, taking two program types and sequencing them one after another. commander-cli\The type level naming combinator, giving your program a name for the sake of documentation. commander-cli)The type level option combinator, with a ^l designating the option's name and another representing the metavariables name for documentation purposes. commander-cli+The type level argument combinator, with a ^( designating the name of that argument. commander-cliCA class for interpreting command line arguments into Haskell types._ commander-cli8A useful default unrender for small, bounded data types. commander-cli We can run a  < action on a state and see if it has a successful campaign. commander-cliJA simple default for getting out the arguments, options, and flags using `s. We use the syntax ~flag for flags and ~opt for options, with arguments using the typical ordered representation. commander-cli"This is a combinator which runs a ]> with the options, arguments, and flags that I get using the / function, ignoring the output of the program. commander-cli"This is a combinator which runs a ]> with the options, arguments, and flags that I get using the  function, returning aV the output of the program upon successful option and argument parsing and returning b otherwise. commander-cliArgument combinator commander-cliOption combinator commander-cliRaw monadic combinator commander-cliSubcommand combinator commander-cli Named command combinator, useful at the top level for naming a program. Typically, the name will be the name or alias of the executable you expect to produce.  commander-cliBoolean flag combinator! commander-clikA convenience combinator that constructs the program I often want to run out of a program I want to write." commander-cliZThe command line program which consists of trying to enter one and then trying the other.# commander-clivA meta-combinator that takes a type-level description of a command line program and produces a simple usage program.$ commander-cliEMiddleware to transform the base monad with a natural transformation.% commander-cli,Middleware to add monadic effects for every  6. Useful for debugging complex command line programs.& commander-cli@Middleware to have effects whenever the program might backtrack.' commander-cliPMiddleware to have effects whenever the program successfully computes a result.( commander-cliCMiddleware to log the state to standard out for every step of the   computation.7]cdefghijklmno  !"#$%&'() !"#  ($%&'24i2"2p      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdecfgcfhijklmnopqrstuv,commander-cli-0.4.1.1-LweIfnLAeNg9zuad899QHbOptions.Commander Middleware HasProgramrunhoist invocationsState argumentsoptionsflags CommanderTActionDefeatVictory+FlagRaw&NamedOptArgUnrenderunrender runCommanderT initialStatecommand_commandargoptrawsubnamedflagtoplevel<+>usage transformwithActionEffectswithDefeatEffectswithVictoryEffectslogState$fUnrenderChar$fUnrenderBool$fUnrenderEither$fUnrenderMaybe $fUnrender()$fUnrenderByteString$fUnrenderByteString0$fUnrenderText $fUnrender[]$fUnrenderWrappedIntegral$fUnrenderWrappedNatural$fAlternativeCommanderT$fMonadCommanderT$fMonadIOCommanderT$fMonadTransCommanderT$fApplicativeCommanderT$fHasProgramTYPE&$fHasProgramTYPE&0$fHasProgramTYPE&1$fHasProgramTYPE&2$fHasProgramTYPERaw$fHasProgramTYPE+$fHasProgramTYPE&3$fNumWrappedIntegral$fRealWrappedIntegral$fOrdWrappedIntegral$fEqWrappedIntegral$fEnumWrappedIntegral$fIntegralWrappedIntegral$fNumWrappedNatural$fRealWrappedNatural$fOrdWrappedNatural$fEqWrappedNatural$fEnumWrappedNatural$fIntegralWrappedNatural$fFunctorCommanderT$fGenericState $fShowState $fEqState $fOrdState$fUnrenderWord64$fUnrenderWord32$fUnrenderWord16$fUnrenderWord8$fUnrenderWord$fUnrenderNatural$fUnrenderInt64$fUnrenderInt32$fUnrenderInt16$fUnrenderInt8 $fUnrenderInt$fUnrenderIntegerProgramTghc-prim GHC.TypesSymbol unrenderSmallbaseSystem.EnvironmentgetArgs GHC.MaybeJustNothing ArgProgramT OptProgramT RawProgramT SubProgramT NamedProgramT FlagProgramT:+: unArgProgramT unOptProgramT unRawProgramT unSubProgramTunNamedProgramTunFlagProgramT