(.module: [library [lux (#- Name) [abstract [equivalence (#+ Equivalence)]] [control ["<>" parser ["." cli (#+ Parser)]]] [data ["." sum] ["." product] ["." text]]]] [// [repository [identity (#+ Identity)]] ["/" profile (#+ Name)]]) (type: .public Compilation #Build #Test) (implementation: any_equivalence (Equivalence Any) (def: (= reference subject) true)) (def: compilation_equivalence (Equivalence Compilation) (sum.equivalence ..any_equivalence ..any_equivalence)) (def: compilation (Parser Compilation) (<>.or (cli.this "build") (cli.this "test"))) (type: .public Command #Version #Clean #POM #Dependencies #Install (#Deploy Text Identity) (#Compilation Compilation) (#Auto Compilation)) (def: .public equivalence (Equivalence Command) ($_ sum.equivalence ... #Version ..any_equivalence ... #Clean ..any_equivalence ... #POM ..any_equivalence ... #Dependencies ..any_equivalence ... #Install ..any_equivalence ... #Deploy ($_ product.equivalence text.equivalence text.equivalence text.equivalence) ... #Compilation ..compilation_equivalence ... #Auto ..compilation_equivalence)) (def: command' (Parser Command) ($_ <>.or (cli.this "version") (cli.this "clean") (cli.this "pom") (cli.this "deps") (cli.this "install") (<>.after (cli.this "deploy") (<>.and cli.any (<>.and cli.any cli.any))) ..compilation (<>.after (cli.this "auto") ..compilation) )) (def: .public command (Parser [Name Command]) ($_ <>.either (<>.after (cli.this "with") ($_ <>.and cli.any ..command')) (\ <>.monad map (|>> [/.default]) ..command') ))