aboutsummaryrefslogtreecommitdiff
path: root/src/cla_parse.cc
diff options
context:
space:
mode:
authordacctal <dacctal@symlinx.net>2026-05-02 08:38:13 +0000
committerdacctal <dacctal@symlinx.net>2026-05-02 08:38:13 +0000
commit44eb727dc537403be092326639a5b7c6d7182146 (patch)
tree1459603e69496400c22f53dcec67ec2c3348400a /src/cla_parse.cc
parentc555d4c25b5526c37e94ee2c593f34bdf28b159e (diff)
fixed like half of everything idk, you can install stuff now
Diffstat (limited to 'src/cla_parse.cc')
-rw-r--r--src/cla_parse.cc116
1 files changed, 51 insertions, 65 deletions
diff --git a/src/cla_parse.cc b/src/cla_parse.cc
index 42d2f65..24b572f 100644
--- a/src/cla_parse.cc
+++ b/src/cla_parse.cc
@@ -1,7 +1,7 @@
-#include <string>
#include <cstring>
#include <filesystem>
#include <iostream>
+#include <string>
#include "cla_parse.hh"
@@ -13,85 +13,71 @@
#include "list_pkgs.hh"
#include "name_from_url.hh"
#include "remove_pkg.hh"
-#include "setup_pkgit.hh"
#include "update_all.hh"
#include "vars.hh"
-void cla_parse(int argc, char** argv) {
+#define COMMAND(large, small, code) \
+ if (strcmp(argv[i], large) == 0 || strcmp(argv[i], small) == 0) \
+ code
+#define NOT_ENOUGH_ARGS(arg, next) \
+ std::cout << print_error << "Not enough arguments! Try: `pkgit " << arg \
+ << " [" << next << "]`"
+
+void cla_parse(int argc, char **argv) {
Pkg pkg;
- if (!argv[1]) { help(); return; }
+ if (!argv[1]) {
+ help();
+ return;
+ }
for (int i = 1; i < argc; i++) {
- if (strcmp(argv[i], "--link") == 0 || strcmp(argv[i], "-l") == 0) {
- is_symlink_install = true;
- }
-
- if (strcmp(argv[i], "add") == 0 || strcmp(argv[i], "a") == 0) {
- for (int j = i+1; j < argc; j++) {
- if (argv[j]) {
- add_repo(argv[j], name_from_url(argv[j]));
- return;
- } else {
- std::cout << print_error << "Not enough arguments! Try: `pkgit add [url]`";
- return;
- }
+ COMMAND("--large", "-l", { is_symlink_install = true; });
+ 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");
}
-
- } else if (strcmp(argv[i], "build") == 0 || strcmp(argv[i], "b") == 0) {
- for (int j = i+1; j < argc; j++) {
- if (argv[j]) {
- build(argv[j]);
- return;
+ });
+ COMMAND("build", "b", {
+ if (argv[i + 1]) {
+ if (argv[i + 2]) {
+ pkg = create_pkg(argv[i + 1], argv[i + 2]);
+ build(pkg);
} else {
- build(std::filesystem::current_path().string().c_str());
- return;
+ pkg = create_pkg(argv[i + 1], "default");
+ build(pkg);
}
+ } else {
+ pkg = create_pkg(".", "default");
+ build(pkg);
}
-
- } else if (strcmp(argv[i], "install") == 0 || strcmp(argv[i], "i") == 0) {
- for (int j = i+1; j < argc; j++) {
- pkg = create_pkg(argv[j]);
- if (argv[j]) {
+ });
+ COMMAND("install", "i", {
+ if (argv[i + 1]) {
+ if (argv[i + 2]) {
+ pkg = create_pkg(argv[i + 1], argv[i + 2]);
install_pkg(pkg);
- return;
} else {
- std::cout << print_error << "Not enough arguments! Try: `pkgit install [url/pkg]`";
- return;
+ pkg = create_pkg(argv[i + 1], "default");
+ install_pkg(pkg);
}
+ } else {
+ NOT_ENOUGH_ARGS(argv[i], "url/pkg");
}
-
- } else if (strcmp(argv[i], "remove") == 0 || strcmp(argv[i], "r") == 0) {
- for (int j = i+1; j < argc; j++) {
- pkg = create_pkg(argv[j]);
- if (argv[j]) {
- remove_pkg(pkg);
- return;
- } else {
- std::cout << print_error << "Not enough arguments! Try: `pkgit remove [url/pkg]`";
- return;
- }
+ });
+ COMMAND("remove", "r", {
+ pkg = create_pkg(argv[i + 1]);
+ if (argv[i + 1]) {
+ remove_pkg(pkg);
+ } else {
+ NOT_ENOUGH_ARGS(argv[i], "url/pkg");
}
-
- } else if (strcmp(argv[i], "update") == 0 || strcmp(argv[i], "u") == 0) {
- update_all();
- return;
-
- } else if (strcmp(argv[i], "list") == 0 || strcmp(argv[i], "l") == 0) {
- list_pkgs();
- return;
-
- } else if (strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "-v") == 0) {
- std::cout << version << std::endl;
- return;
-
- } else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) {
- help();
- return;
-
- } else {
- help();
- return;
- }
+ });
+ COMMAND("update", "u", { update_all(); });
+ COMMAND("list", "l", { list_pkgs(); });
+ COMMAND("--version", "-v", { std::cout << version << std::endl; });
+ COMMAND("--help", "-h", { help(); });
}
}