// tests/t_app_lean.c // Build: cc -std=c11 -O2 -Wall -Wextra -DHAVE_NG -Iinc -Llib -o t_app_lean t_app_lean.c -lng #include "ng.h" #include "ng/app.h" /* ---------- global opts ---------- */ static ng_opt g_global_opts[] = { { "help", 'h', 0, "Show help", NULL }, { "time", 0, 0, "Show runtime", NULL }, { 0 } }; /* ---------- alpha command ---------- */ static ng_opt g_alpha_opts[] = { { "help", 'h', 0, "Show help for alpha", NULL }, { "flag", 'f', 0, "Alpha flag", NULL }, { 0 } }; static int cmd_alpha(int argc, char **argv) { ng_opts_t o; ng_opts_init_auto(&o, argc, argv, g_alpha_opts); int flag = 0; for (;;) { int c = ng_opts_next(&o); if (c == 0) break; if (c < 0) { elog("%s", o.error); return 2; } if (c == 'f') flag = 1; } if (flag) ilog("alpha: flag set"); else ilog("alpha: no flag"); return 0; } /* ---------- command table ---------- */ static ng_cmd g_cmds[] = { NG_CMD("alpha", "Run α-command", g_alpha_opts, cmd_alpha), {0} }; /* ---------- main ---------- */ int main(int argc, char **argv) { ng_app_t A; /* lean init: timer + i18n + theme */ if (ng_init_all(&A, "t_app_lean", g_global_opts) != 0) return 1; /* dispatch commands */ int rc = ng_cmd_run(argc, argv, g_global_opts, g_cmds); /* finish timer */ ng_fini_all(&A); /* if your builtin --time sets A.want_time internally, this works */ ng_print_runtime(&A, A.want_time); return rc; }