aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordacctal <dacctal@symlinx.net>2026-05-25 14:58:55 +0000
committerdacctal <dacctal@symlinx.net>2026-05-25 14:58:55 +0000
commit21acbee45e420c3d501515fd13b25d3a20450b51 (patch)
treed14dc7edbb862581e19e5a1fafd7dfec23ec3fdd /src
parentd8193b7bf893d0c4f3a508dc1eacf44a40cbfef3 (diff)
lua pop is literally black magic
Diffstat (limited to 'src')
-rw-r--r--src/install_pkg.c10
-rw-r--r--src/lua_state.c38
-rw-r--r--src/vars.c1
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;
}
diff --git a/src/vars.c b/src/vars.c
index e8d92e8..967a052 100644
--- a/src/vars.c
+++ b/src/vars.c
@@ -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};