(.module: [lux (#- Module Source) [control [pipe (#+ case>)] ["<>" parser ["." cli (#+ Parser)]]] [tool [compiler [meta [archive [descriptor (#+ Module)]]]]] [world [file (#+ Path)]]]) (type: #export Source Path) (type: #export Library Path) (type: #export Target Path) (type: #export Compilation [(List Source) (List Library) Target Module]) (type: #export Export [(List Source) Target]) (type: #export Service (#Compilation Compilation) (#Interpretation Compilation) (#Export Export)) (template [ ] [(def: (Parser ) (cli.named cli.any))] [^source "--source" Source] [^library "--library" Library] [^target "--target" Target] [^module "--module" Module] ) (def: #export service (Parser Service) ($_ <>.or (<>.after (cli.this "build") ($_ <>.and (<>.some ..^source) (<>.some ..^library) ..^target ..^module)) (<>.after (cli.this "repl") ($_ <>.and (<>.some ..^source) (<>.some ..^library) ..^target ..^module)) (<>.after (cli.this "export") ($_ <>.and (<>.some ..^source) ..^target)) )) (def: #export target (-> Service Target) (|>> (case> (^or (#Compilation [sources libraries target module]) (#Interpretation [sources libraries target module]) (#Export [sources target])) target)))