diff options
| author | dacctal <dacctal@symlinx.net> | 2026-05-25 14:58:55 +0000 |
|---|---|---|
| committer | dacctal <dacctal@symlinx.net> | 2026-05-25 14:58:55 +0000 |
| commit | 21acbee45e420c3d501515fd13b25d3a20450b51 (patch) | |
| tree | d14dc7edbb862581e19e5a1fafd7dfec23ec3fdd /src | |
| parent | d8193b7bf893d0c4f3a508dc1eacf44a40cbfef3 (diff) | |
lua pop is literally black magic
Diffstat (limited to 'src')
| -rw-r--r-- | src/install_pkg.c | 10 | ||||
| -rw-r--r-- | src/lua_state.c | 38 | ||||
| -rw-r--r-- | src/vars.c | 1 |
3 files changed, 42 insertions, 7 deletions
diff --git a/src/install_pkg.c b/src/install_pkg.c index d599de0..c326d48 100644 --- a/src/install_pkg.c +++ b/src/install_pkg.c @@ -25,10 +25,12 @@ void install_pkg(Pkg pkg) { printf("%sbuild complete!\n", print_pkgit); printf("%sinstalling...\n", print_pkgit); - if (is_symlink_install) { - link_install(pkg.src); - } else { - copy_install(pkg.src); + if (is_auto_installed) { + if (is_symlink_install) { + link_install(pkg.src); + } else { + copy_install(pkg.src); + } } printf("%sinstalled!\n", print_pkgit); diff --git a/src/lua_state.c b/src/lua_state.c index 24a9db6..fe7d94f 100644 --- a/src/lua_state.c +++ b/src/lua_state.c @@ -98,7 +98,6 @@ bool repo_build(const char *repository) { lua_pop(L, 2); return false; } - printf("%s'repositories' lua variable '%s' used successfully.\n", print_pkgit, repository); lua_getfield(L, -1, "build"); @@ -107,16 +106,49 @@ bool repo_build(const char *repository) { lua_pop(L, 3); return false; } - + printf("%s'repositories' lua variable 'build' used successfully.\n", print_pkgit); if (lua_pcall(L, 0, 0, 0) != LUA_OK) { printf("'repositories' build failed: %s\n", lua_tostring(L, -1)); lua_pop(L, 1); lua_pop(L, 2); return false; } + printf("%s'repositories' lua function 'build' ran successfully.\n", print_pkgit); + + lua_getfield(L, -1, "pre_install"); + if (!lua_isfunction(L, -1)) { + printf("%s'repositories' lua variable 'pre_install' is not a function.\n", print_warning); + } + printf("%s'repositories' lua variable 'pre_install' used successfully.\n", print_pkgit); + if (lua_pcall(L, 0, 0, 0) != LUA_OK) { + printf("'repositories' pre_install failed: %s\n", lua_tostring(L, -1)); + } + printf("%s'repositories' lua function 'pre_install' ran successfully.\n", print_pkgit); + + lua_getfield(L, -1, "install"); + if (!lua_isfunction(L, -1)) { + printf("%s'repositories' lua variable 'install' is not a function.\n", print_warning); + } else { + is_auto_installed = false; + } + printf("%s'repositories' lua variable 'install' used successfully.\n", print_pkgit); + if (lua_pcall(L, 0, 0, 0) != LUA_OK) { + printf("'repositories' install failed: %s\n", lua_tostring(L, -1)); + } + printf("%s'repositories' lua function 'install' ran successfully.\n", print_pkgit); + lua_pop(L, 1); + lua_getfield(L, -1, "post_install"); + if (!lua_isfunction(L, -1)) { + printf("%s'repositories' lua variable 'post_install' is not a function.\n", print_warning); + } + printf("%s'repositories' lua variable 'post_install' used successfully.\n", print_pkgit); + if (lua_pcall(L, 0, 0, 0) != LUA_OK) { + printf("'repositories' post_install failed: %s\n", lua_tostring(L, -1)); + } lua_pop(L, 2); - printf("%s'repositories' lua function 'build' ran successfully.\n", print_pkgit); + printf("%s'repositories' lua function 'post_install' ran successfully.\n", print_pkgit); + return true; } @@ -10,6 +10,7 @@ bool is_symlink_install = false; bool is_verbose = false; +bool is_auto_installed = true; bool config_exists = false; char home_dir[MAX_PATH_LEN] = {0}; |
