#!/usr/bin/env -S gawk -E
@include "opt"
@include "arr"
func main( p, args, i, j) {
# Defining the CLI
opt::flag(p,
"alpha",
"-a --alpha", _
"Alpha option")
opt::param(p,
"beta",
"-b --beta", _
"Beta option")
# Parsing into a result array
if (!i) {
print args["_error"] > "/dev/stderr"
return 22
}
# Showing result array
# Processing options:
# Boolean option (flag)
if (args["alpha"])
print _"-a was passed"
else
print _"-a was not passed"
# Option with argument
print _"-b was passed with argument: " args["beta"]
else
print _"-b was not passed"
# Option with optional argument
switch (typeof(args["ceta"])) {
case "untyped":
print _"-c was not passed"
break
case "unassigned":
print _"-c was passed with no argument"
break
default:
print _"-c was passed with argument: " args["ceta"]
}
# Counter option
print _"-d was passed " args["delta"] " times"
# Positional parameters
if (i < ARGC)
print _"Positional parameters:"
for (; i < ARGC; i++) {
print "[" ++j "]: " ARGV[i]
}
}
BEGIN {
exit main()
}
auto echoKV(A, s, name, i)
Definition arr.awk:115
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
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
number parse(array P, array R, array< string > argv, number argc)
Parse a result array from a parser and command-line arguments.
Definition opt.awk:181
unassigned flag(array P, string name, string args, string help, string action)
Add boolean option (flag) to parser.
Definition opt.awk:60
unassigned counter(array P, string name, string args, string help, any default, number inc)
Add counter option to parser.
Definition opt.awk:97
number isUntyped(any x)
Check if variable is of type untyped
Definition nil.awk:27