(.module: [lux #* [control ["p" parser]] ["." cli (#+ CLI)] [world [file (#+ File)]]]) (type: #export Configuration {#sources (List File) #target File #module Text}) (type: #export Service (#Compilation Configuration) (#Interpretation Configuration)) (do-template [ ] [(def: #export (CLI Text) (cli.parameter [ ]))] [source "-s" "--source"] [target "-t" "--target"] [module "-m" "--module"] ) (def: #export configuration (CLI Configuration) ($_ p.and (p.some ..source) ..target ..module)) (def: #export service (CLI Service) ($_ p.or (p.after (cli.this "build") ..configuration) (p.after (cli.this "repl") ..configuration)))