///|
fn is_cli_command(value : String) -> Bool {
value == "demo" ||
value == "benchmark" ||
value == "version" ||
value == "help" ||
value == "--"
}
///|
fn command_name(args : Array[String]) -> String {
if args.length() == 0 {
return "demo"
}
if args[0] == "--" {
if args.length() > 1 {
return args[1]
}
return "demo"
}
if is_cli_command(args[0]) {
return args[0]
}
if args.length() > 1 {
if args[1] == "--" && args.length() > 2 {
return args[2]
}
return args[1]
}
args[0]
}
///|
fn print_help() -> Unit {
println("moon-distinct-sketch command line")
println("")
println("Usage: moon run cmd/main -- [command]")
println("")
println("Commands:")
println(" demo run a deterministic library walkthrough (default)")
println(" benchmark emit reproducible CSV benchmark measurements")
println(" version print the module version")
println(" help print this message")
}
///|
fn run_cli(args : Array[String]) -> Int {
match command_name(args) {
"demo" => run_demo()
"benchmark" => run_benchmark()
"version" => {
println("yhsrtty/moon-distinct-sketch 0.2.1")
0
}
"help" => {
print_help()
0
}
unknown => {
println("unknown command: " + unknown)
print_help()
2
}
}
}
///|
fn main {
let _ = run_cli(@env.args())
}