diff options
| author | Jack Jamison <jackqjamison@gmail.com> | 2026-07-22 09:09:18 -0400 |
|---|---|---|
| committer | Jack Jamison <jackqjamison@gmail.com> | 2026-07-22 09:09:18 -0400 |
| commit | 5365f8fa8d6ebfbf3ba92816abe55a99feff6f25 (patch) | |
| tree | 563605dabaf611ebb0c1ee1b65aa56690b01b4fd /snag/src/main.c | |
| parent | 165816f7854340c3ca09287aee66968777af61ad (diff) | |
clean up
Diffstat (limited to 'snag/src/main.c')
| -rw-r--r-- | snag/src/main.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/snag/src/main.c b/snag/src/main.c new file mode 100644 index 0000000..0429fda --- /dev/null +++ b/snag/src/main.c @@ -0,0 +1,52 @@ +#include <stdio.h> + +#include "util.h" +#include "libargs/args.h" +#include "pkg_db.h" + +int cmd_install(char* cmd_name, ArgParser* parser); + +int main(int argc, char* argv[]) { + + // create argument parser + ArgParser* parser = ap_new_parser(); + if (parser == NULL) die("failed to initialize cli parsing"); + ap_set_helptext(parser, "Usage: snag <command>"); + ap_set_version(parser, "0.0"); + + // add install subcommand + ArgParser* install = ap_new_cmd(parser, "install inst i"); + if (install == NULL) die("failed to initialize install cli subcommand"); + ap_set_helptext(install, "Usage: snag install [packages]"); + ap_set_cmd_callback(install, cmd_install); + + // parse the arguments (automatically executes subcommands) + if (!ap_parse(parser, argc, argv)) die("failed to parse arguments"); + + // if no subcommand was specified, parse and execute install as the root command + if (!ap_found_cmd(parser)) { + if (!ap_parse(install, argc, argv)) die("failed to parse arguments"); + cmd_install("install", install); + } + + ap_free(parser); + return 0; +} + +int cmd_install(char* cmd_name, ArgParser* parser) { + + // install each package specified + for (int i = 0; i < ap_count_args(parser); i++) { + if (i != 0) printf("\n"); + + // load package description + char* pkgid = ap_get_arg_at_index(parser, i); + package_info_t info; + if (load_package_info(pkgid, &info)) { + printf("Installing %s - %s\n", info.attrs.name, info.attrs.desc); + run_package_install(&info); + } + } + + return 0; +} |
