Awkl
Loading...
Searching...
No Matches
opt_get.awk

Basic example on how to use the opt module with the structured iterator API (opt::get), similar in style to the getopt and getopt_long command line argument parsers in C on Unix-like systems.

There also exists a gawk first-party version of getopt that is more similar to the C version and on which opt::get is based

#!/usr/bin/env -S gawk -E
@include "opt"
func main( p, Opt, i, j, aflag) {
# Defining the CLI
opt::parser(p, "cli", "0.1.0", _"My CLI program")
opt::flag(p, "a", "-a --alpha", _"Alpha option")
opt::param(p, "b", "-b --beta", _"Beta option")
opt::option(p, "c", "-c --ceta", _"Ceta option")
opt::flag(p, "d", "-d --delta", _"Delta option")
# Processing options as being encountered
Opt["ind"] = 1
while (opt::get(Opt, p, ARGV, ARGC)) {
switch (Opt["c"]) {
case "a":
print Opt["opt"] _" was just encountered"
# setting results for later use
aflag = 1
break
case "b":
print Opt["opt"] _" was just encountered with argument: " Opt["arg"]
break
case "c":
print Opt["opt"] _" was just encountered with argument: " Opt["arg"]
break
case "\0":
print _"unrecognized option just encountered" > "/dev/stderr"
exit 22
default:
print _"other recognized option just encountered"
}
}
# Now likely returns false unless you reset Opt["ind"], or you
# could analize strings after a positionals separator "--"
opt::get(Opt, p, ARGV, ARGC)
# Processing after encountering
if (aflag)
print _"Something when -a or --alpha was passed"
# Positional parameters
i = Opt["ind"]
if (i < ARGC)
print _"Positional parameters:"
for (; i < ARGC; i++)
print "[" ++j "]: " ARGV[i]
}
BEGIN {
exit main()
}
unassigned param(array P, string name, string args, string help, any default, string action)
Add option with 1 argument to parser.
Definition opt.awk:72
bool get(array O, array P, array< string > argv, number argc)
Get results of analyzing the next option argument from a parser. Iterator function.
Definition opt.awk:170
unassigned option(array P, string name, string args, string help, any default, any implicit, string action)
Add option with optional argument to parser.
Definition opt.awk:85
unassigned parser(array P, string name, string version, string description, prefix, long_prefix, auto_help, auto_version)
Create command-line argument parser.
Definition opt.awk:35
unassigned flag(array P, string name, string args, string help, string action)
Add boolean option (flag) to parser.
Definition opt.awk:60