You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Commandant is a Swift framework for parsing command-line arguments, inspired by Argo (which is, in turn, inspired by the Haskell library Aeson).
Example
With Commandant, a command and its associated options could be defined as follows:
structLogCommand:CommandProtocol{typealiasOptions=LogOptionsletverb="log"letfunction="Reads the log"func run(_ options:Options)->Result<(),YourErrorType>{
// Use the parsed options to do something interesting here.
return()}}structLogOptions:OptionsProtocol{letlines:Intletverbose:BoolletlogName:Stringstaticfunc create(_ lines:Int)->(Bool)->(String)->LogOptions{return{ verbose in{ logName inLogOptions(lines: lines, verbose: verbose, logName: logName)}}}staticfunc evaluate(_ m:CommandMode)->Result<LogOptions,CommandantError<YourErrorType>>{return create
<*> m <|Option(key:"lines", defaultValue:0, usage:"the number of lines to read from the logs")<*> m <|Option(key:"verbose", defaultValue:false, usage:"show verbose output")<*> m <|Argument(usage:"the log to read")}}
Then, each available command should be added to a registry: