aboutsummaryrefslogtreecommitdiff
path: root/src/cla_parse.c
diff options
context:
space:
mode:
authordacctal <dacctal@symlinx.net>2026-05-29 09:58:16 +0000
committerdacctal <dacctal@symlinx.net>2026-05-29 09:58:16 +0000
commit156c89a9781e8e5e3580e48646adc36b4d8cee85 (patch)
tree66898330d1614eee1264f053bca5c7347917254a /src/cla_parse.c
parentea4458d3b7f4fee788d86162ee3ce5170eb7e8d7 (diff)
created separate parse loop to prioritize flags
Diffstat (limited to 'src/cla_parse.c')
-rw-r--r--src/cla_parse.c145
1 files changed, 76 insertions, 69 deletions
diff --git a/src/cla_parse.c b/src/cla_parse.c
index 7620d97..9c62e07 100644
--- a/src/cla_parse.c
+++ b/src/cla_parse.c
@@ -19,78 +19,85 @@
#include "resolve_deps.h"
-#define COMMAND(large, small, code) \
- if (strcmp(argv[i], large) == 0 || strcmp(argv[i], small) == 0) \
- code
+#define COMMAND(large, small, code) \
+ if (strcmp(argv[i], large) == 0 || strcmp(argv[i], small) == 0) \
+ code
-#define NOT_ENOUGH_ARGS(arg, next) \
- printf("%sNot enough arguments! Try: `pkgit %s [%s]`\n", print_error, arg, next)
+#define NOT_ENOUGH_ARGS(arg, next) \
+ printf("%sNot enough arguments! Try: `pkgit %s [%s]`\n", print_error, arg, \
+ next)
void cla_parse(int argc, char **argv) {
- Pkg pkg = {0};
+ Pkg pkg = {0};
- if (!argv[1]) {
- help();
- return;
- }
+ if (!argv[1]) {
+ help();
+ return;
+ }
- for (int i = 1; i < argc; i++) {
- COMMAND("--link", "-l", { is_symlink_install = true; });
- COMMAND("--quiet", "-q", { is_verbose = false; });
- COMMAND("add", "a", {
- if (argv[i + 1]) {
- add_repo(argv[i + 1], name_from_url(argv[i + 1]));
- } else {
- NOT_ENOUGH_ARGS(argv[i], "url");
- }
- });
- COMMAND("build", "b", {
- if (argv[i + 1]) {
- if (argv[i + 2]) {
- pkg = create_pkg(argv[i + 1], argv[i + 2]);
- build(pkg);
- } else if (!is_verbose) {
- pkg = create_pkg(argv[i + 1], "quiet");
- build(pkg);
- } else {
- pkg = create_pkg(argv[i + 1], "default");
- build(pkg);
- }
- } else {
- pkg = create_pkg(".", "default");
- build(pkg);
- }
- });
- COMMAND("install", "i", {
- if (argv[i + 1]) {
- if (argv[i + 2]) {
- pkg = create_pkg(argv[i + 1], argv[i + 2]);
- install_pkg(pkg);
- } else if (!is_verbose) {
- pkg = create_pkg(argv[i + 1], "quiet");
- install_pkg(pkg);
- } else {
- pkg = create_pkg(argv[i + 1], "default");
- install_pkg(pkg);
- }
- } else {
- NOT_ENOUGH_ARGS(argv[i], "url/pkg");
- }
- });
- COMMAND("remove", "r", {
- if (argv[i + 1]) {
- pkg = create_pkg(argv[i + 1], "default");
- remove_pkg(pkg);
- } else {
- NOT_ENOUGH_ARGS(argv[i], "url/pkg");
- }
- });
- COMMAND("update", "u", { update_all(); });
- COMMAND("declare", "d", { declare(); });
- COMMAND("list", "l", { list_pkgs(); });
- COMMAND("find", "f", { find(argv[i + 1]); });
- COMMAND("--version", "-v", { printf("%s\n", version); });
- COMMAND("--help", "-h", { help(); });
- COMMAND("--check", "-c", { resolve_deps(); return; });
- }
+ for (int i = 1; i < argc; i++) {
+ COMMAND("--link", "-l", { is_symlink_install = true; });
+ COMMAND("--quiet", "-q", { is_verbose = false; });
+ }
+
+ for (int i = 1; i < argc; i++) {
+ COMMAND("add", "a", {
+ if (argv[i + 1]) {
+ add_repo(argv[i + 1], name_from_url(argv[i + 1]));
+ } else {
+ NOT_ENOUGH_ARGS(argv[i], "url");
+ }
+ });
+ COMMAND("build", "b", {
+ if (argv[i + 1]) {
+ if (argv[i + 2]) {
+ pkg = create_pkg(argv[i + 1], argv[i + 2]);
+ build(pkg);
+ } else if (!is_verbose) {
+ pkg = create_pkg(argv[i + 1], "quiet");
+ build(pkg);
+ } else {
+ pkg = create_pkg(argv[i + 1], "default");
+ build(pkg);
+ }
+ } else {
+ pkg = create_pkg(".", "default");
+ build(pkg);
+ }
+ });
+ COMMAND("install", "i", {
+ if (argv[i + 1]) {
+ if (argv[i + 2]) {
+ pkg = create_pkg(argv[i + 1], argv[i + 2]);
+ install_pkg(pkg);
+ } else if (!is_verbose) {
+ pkg = create_pkg(argv[i + 1], "quiet");
+ install_pkg(pkg);
+ } else {
+ pkg = create_pkg(argv[i + 1], "default");
+ install_pkg(pkg);
+ }
+ } else {
+ NOT_ENOUGH_ARGS(argv[i], "url/pkg");
+ }
+ });
+ COMMAND("remove", "r", {
+ if (argv[i + 1]) {
+ pkg = create_pkg(argv[i + 1], "default");
+ remove_pkg(pkg);
+ } else {
+ NOT_ENOUGH_ARGS(argv[i], "url/pkg");
+ }
+ });
+ COMMAND("update", "u", { update_all(); });
+ COMMAND("declare", "d", { declare(); });
+ COMMAND("list", "l", { list_pkgs(); });
+ COMMAND("find", "f", { find(argv[i + 1]); });
+ COMMAND("--version", "-v", { printf("%s\n", version); });
+ COMMAND("--help", "-h", { help(); });
+ COMMAND("--check", "-c", {
+ resolve_deps();
+ return;
+ });
+ }
} \ No newline at end of file