Awkl
Loading...
Searching...
No Matches
opt_parse.awk

Basic example on how to use the opt module with the result-array API (opt::parse), similar in style to the argparse command line argument parsers in Python and Lua

#!/usr/bin/env -S gawk -E
@include "opt"
@include "arr"
func main( p, args, i, j) {
# Defining the CLI
opt::parser(p, "cli", "0.1.0", _"My CLI program")
opt::flag(p, "alpha", "-a --alpha", _"Alpha option")
opt::param(p, "beta", "-b --beta", _"Beta option")
opt::option(p, "ceta", "-c --ceta", _"Ceta option")
opt::counter(p, "delta", "-d --delta", _"Delta option")
# Parsing into a result array
i = opt::parse(p, args, ARGV, ARGC)
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
if (!type::isUntyped(args["beta"]))
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