#!/bin/bash source src/g.bash g::log::setLevel internal g::log::enableTarget g::arg g::info "Defining application..." g::app ex "A simple example application" g::app::command shell "Start an interactive shell" g::app::command::arg name "The name of the shell" g::app::command::flag no-tty "Disable TTY output" function app::ex::shell() { echo "Starting shell: '$@'" } g::app::command ls "List contents of the directory" g::app::command::flag dir= "The directory to list" g::app::command::flag fubar= "A fubar" g::app::command::flag dry-run "Run dry" g::app::command::arg name "Name of the ls" function app::ex::ls() { local args="$1" echo "Argcall: $args::arg" echo "Arg1: $($args::arg name)" echo "Arg1: $(g::arg $g__APP_LAST_ARGPARSE 0)" echo "Arg2: $(g::arg $g__APP_LAST_ARGPARSE name)" echo "Dir: $(g::flag $g__APP_LAST_ARGPARSE dir)" echo "Fubar: $(g::flag $g__APP_LAST_ARGPARSE fubar)" echo "dry-run: $(g::flag $g__APP_LAST_ARGPARSE dry-run)" if g::arg::has $g__APP_LAST_ARGPARSE 0; then echo "Has arg0" fi echo "All args: $(g::args $g__APP_LAST_ARGPARSE)" } g::app::invoke "$@"