diff options
Diffstat (limited to 'src/config.c')
| -rw-r--r-- | src/config.c | 33 |
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; } |
