module examples.inject; import cmdline; import std.stdio; import std.conv; void main(in string[] argv) { program.name("inject"); program.allowExposeOptionValue(true); program.setVersion("1.1.0"); program .option("--global-bool", "", false) .option("--global-int <num>", "", 13) .option("--global-variadic <nums...>", "", [1, 2, 3, 4]) .provides("global-bool") .providesAs(["global-int": "gint", "global-variadic": "gvar"]) .argToOpt("global-bool", "global-int") .action(() { writefln("call main program:%s", program.name); }); auto sub_cmd = program.command("sub"); sub_cmd .option("--sub-bool", "", true) .option("--sub-int <num>", "", 34) .injects("global-bool", "gint") .injectsAs("gvar", "svar") .action((opts) { bool sbool = opts("sub-bool").get!bool; bool gbool = opts("global-bool").get!bool; int sint = opts("sub-int").get!int; int gint = opts("gint").get!int; int[] svar = opts("svar").get!(int[]); writefln("sbool: %s, gbool: %s, sint: %d, gint: %d, svar: %s", sbool, gbool, sint, gint, svar .to!string); writefln("%s\t%s", "global-variadic", opts(":global-variadic").get!(int[]) .to!string); }); program.parse(argv); }