aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c33
1 files changed, 32 insertions, 1 deletions
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;
}