diff options
| -rw-r--r-- | include/add_repo.h | 28 | ||||
| -rw-r--r-- | include/fetch.h | 28 | ||||
| -rw-r--r-- | src/add_repo.c | 56 | ||||
| -rw-r--r-- | src/fetch.c | 26 | ||||
| -rw-r--r-- | src/lua_install.c | 3 |
5 files changed, 140 insertions, 1 deletions
diff --git a/include/add_repo.h b/include/add_repo.h new file mode 100644 index 0000000..48a73fa --- /dev/null +++ b/include/add_repo.h @@ -0,0 +1,28 @@ +/* + + pkgit - package it! + + Copyright (C) 2026 dacctal + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +*/ + +#ifndef PKGIT_ADD_H +#define PKGIT_ADD_H + +#include "pkg.h" + +void add_repo(package_t *pkg); + +#endif diff --git a/include/fetch.h b/include/fetch.h new file mode 100644 index 0000000..e58067e --- /dev/null +++ b/include/fetch.h @@ -0,0 +1,28 @@ +/* + + pkgit - package it! + + Copyright (C) 2026 dacctal + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +*/ + +#ifndef PKGIT_FETCH_H +#define PKGIT_FETCH_H + +#include "pkg.h" + +void fetch(package_t *pkg); + +#endif diff --git a/src/add_repo.c b/src/add_repo.c new file mode 100644 index 0000000..1c41f3b --- /dev/null +++ b/src/add_repo.c @@ -0,0 +1,56 @@ +/* + + pkgit - package it! + + Copyright (C) 2026 dacctal + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +*/ + +#include <stdio.h> +#include <string.h> +#include <stdbool.h> + +#include "add_repo.h" + +#include "files.h" +#include "globs.h" + +void add_repo(package_t *pkg) { + bool is_previous_repos = false; + char rfile_line[1024]; + char rfile_contents[8192] = {0}; + + if (file_exists(cfg.repos.data)) { + FILE *rfile = fopen(cfg.repos.data, "r"); + if (rfile) { + while (fgets(rfile_line, sizeof(rfile_line), rfile)) { + strcat(rfile_contents, rfile_line); + } + fclose(rfile); + is_previous_repos = true; + } + } + + char *previous_repos = is_previous_repos ? rfile_contents : ""; + + FILE *wfile = fopen(cfg.repos.data, "w"); + if (wfile) { + fprintf(wfile, + "%srepositories[\"%s\"] = { url = \"%s\" }\n", + previous_repos, pkg->name.data, pkg->url.data + ); + fclose(wfile); + } +} diff --git a/src/fetch.c b/src/fetch.c new file mode 100644 index 0000000..c6cefe5 --- /dev/null +++ b/src/fetch.c @@ -0,0 +1,26 @@ +/* + + pkgit - package it! + + Copyright (C) 2026 dacctal + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +*/ + +#include <git2.h> + +#include "fetch.h" + +bool fetch(package_t *pkg) { +} diff --git a/src/lua_install.c b/src/lua_install.c index dc09c3e..1c240d4 100644 --- a/src/lua_install.c +++ b/src/lua_install.c @@ -23,6 +23,7 @@ #include "pkgit_lua.h" +#include "add_repo.h" #include "build.h" #include "files.h" #include "globs.h" @@ -169,7 +170,7 @@ void pkg_install(package_t *pkg) { if (!repo_exists) { log_info("adding " GREEN "%.*s" COLOR_RESET , &pkg->name); if (pkg->url.len > 0) { - add_repo(pkg->url, pkg->name); + add_repo(pkg); log_info("added " GREEN "%.*s" COLOR_RESET , &pkg->name); } } else { |
