diff options
| author | forever2k38 <forever2k38@noreply.codeberg.org> | 2026-08-30 22:38:37 +0200 |
|---|---|---|
| committer | forever2k38 <forever2k38@noreply.codeberg.org> | 2026-08-30 22:38:37 +0200 |
| commit | 31d0ca0d7ec41d611eb89759b6bee07a14be50ce (patch) | |
| tree | a30d4e358ad5d86733b90ffdead8986f75aedbe6 | |
| parent | 4157efea8155b9700b49834ebcd4b4e978546478 (diff) | |
lua config work
| -rw-r--r-- | src/args.c | 29 | ||||
| -rw-r--r-- | src/config.c | 33 |
2 files changed, 60 insertions, 2 deletions
@@ -4,7 +4,11 @@ #include "stdio.h" #include "string.h" -char *help = "pow! - the pow!erful package manager\n" +char *help = "▄▄▄▄▄▄▄▄▄▄▄ ▄\n" + "█ █ █ ▄ █\n" + "█▄▄▄▄█▄▄▄▄█▄▄█▄▄█\n" + "█\n\n" + "pow! - the pow!erful package manager\n" "Made with love by forever2k38\n" "Source code at: https://codeberg.org/einfach/pow\n" "Use outside of einfach is unsupported.\n" @@ -17,9 +21,25 @@ char *help = "pow! - the pow!erful package manager\n" int pow_args_parse(int argc, char **argv, pow_args *args) { int flags = 0; + bool next_flag_config; + for (int i = 0; i < argc; i++) { char *arg = argv[i]; + if (next_flag_config) { + if (!strncmp(arg, "-", sizeof("-") - 1)) { + printf("Missing argument for -c\n"); + + return 1; + } + + args->cfg_path = arg; + + next_flag_config = false; + + continue; + } + if (strcmp(arg, "--help") == 0) { flags |= POW_FLAG_HELP; @@ -27,9 +47,16 @@ int pow_args_parse(int argc, char **argv, pow_args *args) { } if (strcmp(arg, "-c") == 0) { + next_flag_config = true; + + continue; } } + if (next_flag_config) { + printf("Missing argument for -c\n"); + } + args->flags = flags; return 0; diff --git a/src/config.c b/src/config.c index 4019e7b..54a505a 100644 --- a/src/config.c +++ b/src/config.c @@ -22,7 +22,7 @@ int pow_open_config(pow_config *cfg, char *path) { return 1; } - err = lua_pcall(L, 0, 0, 0); + err = lua_pcall(L, 0, 1, 0); if (err) { printf("%s\n", lua_tostring(L, -1)); @@ -30,5 +30,36 @@ int pow_open_config(pow_config *cfg, char *path) { return 1; } + if (!lua_istable(L, -1)) { + printf("bad config. you must return a table.\n"); + + return 1; + } + + lua_getfield(L, -1, "repos"); // this will push the entire config table to -2 + // and push repos to -1 + + if (lua_istable(L, -1)) { + size_t repo_count = lua_rawlen(L, -1); + + for (size_t i = 1; i <= repo_count; i++) { + lua_rawgeti(L, -1, i); + + if (lua_istable(L, -1)) { + lua_getfield(L, -1, "path"); + + if (lua_isstring(L, -1)) { + const char *path = lua_tostring(L, -1); + + printf("%s\n", path); + } + + lua_pop(L, 1); + } + + lua_pop(L, 1); + } + } + return 0; } |
