From aa0d78815004ae6b0c4a42b0e024f5c4ef555ae2 Mon Sep 17 00:00:00 2001 From: dacctal Date: Sun, 24 May 2026 10:23:38 +0000 Subject: c rewrite --- src/install_pkg.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/install_pkg.c (limited to 'src/install_pkg.c') diff --git a/src/install_pkg.c b/src/install_pkg.c new file mode 100644 index 0000000..d599de0 --- /dev/null +++ b/src/install_pkg.c @@ -0,0 +1,53 @@ +#include +#include +#include +#include + +#include "install_pkg.h" +#include "add_repo.h" +#include "fetch_src.h" +#include "build.h" +#include "copy_install.h" +#include "link_install.h" +#include "lua_state.h" +#include "name_from_url.h" +#include "vars.h" + +void install_pkg(Pkg pkg) { + if (!pkg.is_local) { + printf("%sfetching source...\n", print_pkgit); + fetch_src(pkg); + printf("%ssource fetched!\n", print_pkgit); + } + + printf("%sbuilding...\n", print_pkgit); + build(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); + } + printf("%sinstalled!\n", print_pkgit); + + bool repo_exists = false; + for (size_t i = 0; i < cached_repos_count; i++) { + char *repo_name = name_from_url(cached_repos[i].source_value); + if (strcmp(repo_name, pkg.name) == 0) { + repo_exists = true; + } + free(repo_name); + } + + if (!repo_exists) { + printf("%sadding repository...\n", print_pkgit); + if (pkg.url && strlen(pkg.url) > 0) { + add_repo(pkg.url, pkg.name); + } + printf("%sdone!\n", print_pkgit); + } else { + printf("%srepo already exists, done!\n", print_pkgit); + } +} \ No newline at end of file -- cgit v1.2.3