!bN[g      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefIA set of combinators for constructing and executing command line programs(c) Samuel Schlesinger 2020MITsgschlesinger@gmail.com experimentalPOSIX, WindowsNone"#&'*-.17;<=?HMSUVX_kX( commander-cliThe 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   c actions between monads if you can uniformly turn computations in one into another. We also store   in the form of a g h&, in order to automatically generate . programs.  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-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-clinThe type level program sequencing combinator, taking two program types and sequencing them one after another. commander-cliDThe type level tag for whether or not a variable is required or not. commander-cliThe type level /% combinator, allowing a command line  commander-cliThe type level 0K combinator, allowing a command line program to have better documentation. commander-cliThe type level (Z monadic program combinator, allowing a command line program to just do some computation. commander-cliThe type level "ironment variable combinator, taking a name as input, allowing your program to take environment variables as input automatically. commander-cliThe type level +Z combinator, taking a name as input, allowing your program to take flags with the syntax ~flag. commander-cliThe type level &ion combinator, with a il designating the option's name and another representing the metavariables name for documentation purposes. commander-cliThe type level %ument combinator, with a i( designating the name of that argument. commander-cli+The type level combinator for constructing *U programs, giving your program a name at the toplevel for the sake of documentation. commander-cliCA class for interpreting command line arguments into Haskell types.j commander-cli8A useful default unrender for small, bounded data types. commander-cliJA simple default for getting out the arguments, options, and flags using ks. 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 lV the output of the program upon successful option and argument parsing and returning m otherwise." commander-cli(Required environment variable combinator# commander-cli(Optional environment variable combinator$ commander-cli5Optional environment variable combinator with default% commander-cli Environment Argument combinator& commander-cliOption combinator' commander-cliOption combinator with default( commander-cliRaw monadic combinator) commander-cliSubcommand combinator* commander-cliNamed 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-clitA combinator which augments the documentation of the next element, by adding a description after its name and type.0 commander-cli5A combinator which takes a program, and a type-level iv description of that program, and produces a program here the documentation is annotated with the given description.1 commander-cliEMiddleware to transform the base monad with a natural transformation.2 commander-cli,Middleware to add monadic effects for every 6. Useful for debugging complex command line programs.3 commander-cli@Middleware to have effects whenever the program might backtrack.4 commander-cliPMiddleware to have effects whenever the program successfully computes a result.n commander-cli/Produce a 2-dimensional textual drawing of the o description of this program.5 commander-cliCMiddleware to log the state to standard out for every step of the  computation.L pqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456%&'()*+,-."#$0/!   5123424z2-2      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsmtumvwmvxyjkz{|}~-commander-cli-0.10.1.0-FHmXNGI7vH0LiZAq0hvtAmOptions.Commander)commandert-0.1.0.0-7eqjOgks5qIJx6Dxssb0jTControl.Monad.Commander runCommanderTVictoryDefeatAction CommanderT Middleware HasProgramProgramTrunhoist documentationState argumentsoptionsflags+& OptionalityRequiredOptional Annotated DescriptionRawEnvFlagOptArgNamedUnrenderunrender initialStatecommand_commandenvenvOpt envOptDefargoptoptDefrawsubnamedflagtoplevel<+>usage annotated description transformwithActionEffectswithDefeatEffectswithVictoryEffectslogState$fUnrenderChar$fUnrenderBool$fUnrenderEither $fUnrender()$fUnrenderByteString$fUnrenderByteString0$fUnrenderText $fUnrender[]$fUnrenderWrappedIntegral$fUnrenderWrappedNatural$fHasProgramTYPE&$fHasProgramTYPE&0$fHasProgramTYPE&1$fHasProgramTYPE&2$fHasProgramTYPE&3$fHasProgramTYPE&4$fHasProgramTYPERaw$fHasProgramTYPE+$fHasProgramTYPE&5$fHasProgramTYPE&6$fHasProgramTYPE&7$fNumWrappedIntegral$fRealWrappedIntegral$fOrdWrappedIntegral$fEqWrappedIntegral$fEnumWrappedIntegral$fIntegralWrappedIntegral$fNumWrappedNatural$fRealWrappedNatural$fOrdWrappedNatural$fEqWrappedNatural$fEnumWrappedNatural$fIntegralWrappedNatural$fGenericState $fShowState $fEqState $fOrdState$fUnrenderWord64$fUnrenderWord32$fUnrenderWord16$fUnrenderWord8$fUnrenderWord$fUnrenderNatural$fUnrenderInt64$fUnrenderInt32$fUnrenderInt16$fUnrenderInt8 $fUnrenderInt$fUnrenderIntegercontainers-0.6.0.1 Data.TreeForestbaseGHC.BaseStringghc-prim GHC.TypesSymbol unrenderSmallSystem.EnvironmentgetArgs GHC.MaybeJustNothingdocumentTree ArgProgramT OptProgramT RawProgramT SubProgramT NamedProgramT FlagProgramTEnvProgramT'OptionalEnvProgramT'RequiredDescriptionProgramTAnnotatedProgramT:+: unArgProgramT unOptProgramT unOptDefault unRawProgramT unSubProgramTunNamedProgramTunFlagProgramTunEnvProgramT'Optional unEnvDefaultunEnvProgramT'Required