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