import std.stdio; import std.getopt; import prim.opt; import prompt.ps1; import prompt.rps1; import prompt.preexec; import style; import style.color; Opts defaultOpts() { Opts opts; opts.pathlen = 3; opts.pchar = "*"; return opts; } void printHelp(GetoptResult args) { defaultGetoptPrinter("prim prompt:\n", args.options); writeln("\nEnvironment:\n", "\tNO_COLOR\tsee https://no-color.org"); } void main(string[] argv) { Opts opts = defaultOpts(); try { GetoptResult args = getopt( argv, std.getopt.config.bundling, "ps1|p", "print PS1", &opts.ps1, "rps1|r", "print RPS1", &opts.rps1, "preexec|x", "print preexec", &opts.preexec, std.getopt.config.required, "col", "terminal width", &opts.col, std.getopt.config.required, "row", "terminal height", &opts.row, std.getopt.config.required, "status", "previous command exit code", &opts.status, "pathlen", "set length of displayed path", &opts.pathlen, "pchar", "override default prompt character", &opts.pchar, ); if (args.helpWanted) { printHelp(args); } } catch (Exception e) { writeln(e.msg); writeln("try '--help' for more information"); } dorun(opts); } void dorun(Opts opts) { if (opts.ps1) { ps1(opts).write(); } if (opts.preexec) { preexec(opts).write(); } if (opts.rps1) { rps1(opts).write(); } }