aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordacctal <donotcontactmevia@email.invalid>2026-07-02 03:54:29 +0000
committerdacctal <donotcontactmevia@email.invalid>2026-07-02 03:54:29 +0000
commit2fe0443d7073e59b1e4d75f49f0a5a417678f4cd (patch)
tree24a269f1fa532eacea4380d03882abe145dc297d /src
parentfe3caeefac7a2081f5c9db90bf5c821624a71082 (diff)
ezntek: checkpoint!
Diffstat (limited to 'src')
-rw-r--r--src/cla_parse.c76
-rw-r--r--src/globs.c1
-rw-r--r--src/help.c9
-rw-r--r--src/lua_globs.c4
-rw-r--r--src/main.c4
-rw-r--r--src/pkg/.clangd4
-rw-r--r--src/pkg_create.c (renamed from src/pkg/create.c)5
-rw-r--r--src/pkg_free.c9
-rw-r--r--src/str.c25
9 files changed, 93 insertions, 44 deletions
diff --git a/src/cla_parse.c b/src/cla_parse.c
index ab1e44c..4d824f4 100644
--- a/src/cla_parse.c
+++ b/src/cla_parse.c
@@ -31,7 +31,7 @@
#include "help.h"
// #include "name_from_url.h"
// #include "pkg_build.h"
-#include "pkg/create.h"
+#include "pkg.h"
// #include "pkg_search.h"
// #include "pkg_install.h"
// #include "pkg_list.h"
@@ -40,9 +40,8 @@
// #include "repo_add.h"
// #include "update.h"
-#define COMMAND(arg, large, small, code) \
- if (strcmp(arg, large) == 0 || strcmp(arg, small) == 0) \
- code
+#define COMMAND(large, small) \
+ (!strcmp(argv[i], large) || !strcmp(argv[i], small))
#define NOT_ENOUGH_ARGS(arg, next) \
log_error("Not enough arguments! Try: pkgit %s [%s]", (arg), (next))
@@ -59,7 +58,8 @@ void cmd_add(char **argv, int i) {
void cmd_build(int argc, char **argv, int i) {
if (argv[i + 1]) {
for (int j = i + 1; j < argc; j++) {
- if (argv[j][0] == '-') continue;
+ if (argv[j][0] == '-')
+ continue;
printf("build pkg %s\n", argv[j]);
// str_slc arg = mstrslc(argv[j]);
// package_t pkg = pkg_create(arg);
@@ -76,7 +76,8 @@ void cmd_build(int argc, char **argv, int i) {
void cmd_install(int argc, char **argv, int i) {
if (argv[i + 1]) {
for (int j = i + 1; j < argc; j++) {
- if (argv[j][0] == '-') continue;
+ if (argv[j][0] == '-')
+ continue;
printf("install pkg %s\n", argv[j]);
// str_slc arg = mstrslc(argv[j]);
// package_t pkg = pkg_create(arg);
@@ -90,7 +91,8 @@ void cmd_install(int argc, char **argv, int i) {
void cmd_remove(int argc, char **argv, int i) {
if (argv[i + 1]) {
for (int j = i + 1; j < argc; j++) {
- if (argv[j][0] == '-') continue;
+ if (argv[j][0] == '-')
+ continue;
printf("remove pkg %s\n", argv[j]);
// str_slc arg = mstrslc(argv[j]);
// package_t pkg = pkg_create(arg);
@@ -160,10 +162,14 @@ void flags_cmd(int argc, char **argv, int i) {
void flags_parse(int argc, char **argv) {
for (int i = 1; i < argc; i++) {
- if (argv[i][0] != '-') continue;
+ if (argv[i][0] != '-')
+ continue;
if (argv[i][1] == '-') {
- COMMAND(argv[i], "--quiet", "-q", { flags.verbose = false; });
- COMMAND(argv[i], "--force", "-f", { flags.force = true; });
+ if (COMMAND("--quiet", "-q"))
+ flags.verbose = false;
+ if (COMMAND("--force", "-f")) {
+ flags.force = true;
+ };
} else {
flags_mod(argv, i);
flags_cmd(argc, argv, i);
@@ -173,22 +179,48 @@ void flags_parse(int argc, char **argv) {
void cmds_parse(int argc, char **argv) {
for (int i = 1; i < argc; i++) {
- COMMAND(argv[i], "--add", "a", { cmd_add(argv, i); });
- COMMAND(argv[i], "--build", "b", { cmd_build(argc, argv, i); });
- COMMAND(argv[i], "--install", "i", { cmd_install(argc, argv, i); });
- COMMAND(argv[i], "--remove", "r", { cmd_remove(argc, argv, i); });
- COMMAND(argv[i], "--update", "u", {/*update();*/});
- COMMAND(argv[i], "--declare", "d", {/*declare();*/});
- COMMAND(argv[i], "--list", "l", {/*pkgs_list();*/});
- COMMAND(argv[i], "--search", "s", {/*search(argv[i + 1]);*/});
- COMMAND(argv[i], "--version", "v", { printf("%s\n", VERSION); });
- COMMAND(argv[i], "--help", "h", { help(); });
- COMMAND(argv[i], "--check", "c", {/*deps_resolve();*/});
+ if (COMMAND("--add", "a")) {
+ cmd_add(argv, i);
+ }
+ if (COMMAND("--build", "b")) {
+ cmd_build(argc, argv, i);
+ }
+ if (COMMAND("--install", "i")) {
+ cmd_install(argc, argv, i);
+ }
+ if (COMMAND("--remove", "r")) {
+ cmd_remove(argc, argv, i);
+ }
+ if (COMMAND("--update", "u")) {
+ panic("not implemented");
+ // update();
+ }
+ if (COMMAND("--declare", "d")) {
+ // declare();
+ }
+ if (COMMAND("--list", "l")) {
+ // pkgs_list();
+ }
+ if (COMMAND("--search", "s")) {
+ // search(argv[i + 1]);
+ }
+ if (COMMAND("--version", "v")) {
+ printf(VERSION "\n");
+ }
+ if (COMMAND("--help", "h")) {
+ help();
+ }
+ if (COMMAND("--check", "c")) {
+ // deps_resolve
+ }
}
}
void cla_parse(int argc, char **argv) {
- if (!argv[1]) {
+ // default
+ flags.force = false;
+ flags.verbose = true;
+ if (argc == 1) {
help();
return;
}
diff --git a/src/globs.c b/src/globs.c
index 519e5f9..860bafb 100644
--- a/src/globs.c
+++ b/src/globs.c
@@ -35,7 +35,6 @@ void init_vars(void) {
if (file_exists("/etc/pkgit/repos.lua")) {
cfg.dir = mstr("/etc/pkgit");
cfg.name = mstr("/etc/pkgit/repos.lua");
-
} else {
const char *tmp = getenv("XDG_CONFIG_HOME");
if (tmp) {
diff --git a/src/help.c b/src/help.c
index 8580844..bacdcd9 100644
--- a/src/help.c
+++ b/src/help.c
@@ -62,13 +62,14 @@ void help(void) {
printf(BOLD_YELLOW "'-_ " BOLD_MAGENTA "'" BOLD_YELLOW " _-' \n");
printf(BOLD_YELLOW " `'-.-'` " COLOR_RESET "\n");
} else {
- printf("pkgit %s%s- package it!%s\n", ITALIC, GRAY, COLOR_RESET);
- printf("%s%s%s\n", MAGENTA, VERSION, COLOR_RESET);
+ printf(BOLD "pkgit " COLOR_RESET ITALIC GRAY "- package it!" COLOR_RESET
+ "\n");
+ printf("version " MAGENTA VERSION COLOR_RESET "\n");
}
printf("\n");
printf(RED "subcommand flags" COLOR_RESET ":\n");
- for (size_t i = 0; i < sizeof(cmd_flags) / sizeof(cmd_flags[0]); i++) {
+ for (size_t i = 0; i < LENGTH(cmd_flags); i++) {
printf(COLOR_RESET "\t" GREEN "%-2s" COLOR_RESET ", " YELLOW
"%-12s" BLUE "%-16s" GRAY "# %s\n" COLOR_RESET,
cmd_flags[i].short_flag, cmd_flags[i].long_flag,
@@ -76,7 +77,7 @@ void help(void) {
}
printf("\n" RED "modifier flags" COLOR_RESET ":\n");
- for (size_t i = 0; i < sizeof(mod_flags) / sizeof(mod_flags[0]); i++) {
+ for (size_t i = 0; i < LENGTH(mod_flags); i++) {
printf(COLOR_RESET "\t" GREEN "%-2s" COLOR_RESET ", " YELLOW
"%-12s" BLUE "%-16s" GRAY "# %s\n" COLOR_RESET,
mod_flags[i].short_flag, mod_flags[i].long_flag,
diff --git a/src/lua_globs.c b/src/lua_globs.c
index 5a8e51c..d6bd353 100644
--- a/src/lua_globs.c
+++ b/src/lua_globs.c
@@ -18,10 +18,12 @@
*/
-#include "lua_globs.h"
+#include <stdlib.h>
+
#include "files.h"
#include "globs.h"
#include "log.h"
+#include "lua_globs.h"
#include "str.h"
lua_State *L = NULL;
diff --git a/src/main.c b/src/main.c
index 5ac5bde..f67ef9d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -19,14 +19,16 @@
*/
// #include "cla_parse.h"
+#include "pkg.h"
#include "globs.h"
-#include "pkg_create.h"
#include "str.h"
int main(int argc, char **argv) {
(void)argc;
init_vars();
package_t pkg = pkg_create(mstrslc(argv[1]));
+ str_println(&pkg.name);
+ pkg_free(&pkg);
// cla_parse(argc, argv);
free_vars();
return 0;
diff --git a/src/pkg/.clangd b/src/pkg/.clangd
deleted file mode 100644
index 5022e8f..0000000
--- a/src/pkg/.clangd
+++ /dev/null
@@ -1,4 +0,0 @@
-CompileFlags:
- Add: [-I/usr/include/luajit-2.1, -I../include]
----
-UseTab: Always
diff --git a/src/pkg/create.c b/src/pkg_create.c
index 9e3e765..9517868 100644
--- a/src/pkg/create.c
+++ b/src/pkg_create.c
@@ -21,10 +21,11 @@
#include <string.h>
#include <unistd.h>
+#include "pkg.h"
+
#include "files.h"
#include "globs.h"
#include "log.h"
-#include "pkg_create.h"
#include "str.h"
static str get_destdir(str_slc cwd, str_slc arg) {
@@ -40,7 +41,7 @@ static str get_pkgsrc(package_t pkg) {
return str_format("%.*s/%.*s", str_fmt(&inst_dirs.src), pkg.name);
else
return str_format("%.*s/%.*s/%.*s", str_fmt(&inst_dirs.src),
- str_fmt(&pkg.name), str_fmt(&pkg.version));
+ str_fmt(&pkg.name), str_fmt(&pkg.version));
}
package_t pkg_create(str_slc arg) {
diff --git a/src/pkg_free.c b/src/pkg_free.c
new file mode 100644
index 0000000..2b1d670
--- /dev/null
+++ b/src/pkg_free.c
@@ -0,0 +1,9 @@
+#include "pkg.h"
+
+void pkg_free(package_t *pkg) {
+ str_free(&pkg->name);
+ str_free(&pkg->url);
+ str_free(&pkg->version);
+ str_free(&pkg->target);
+ str_free(&pkg->src);
+}
diff --git a/src/str.c b/src/str.c
index c845ed5..67fd709 100644
--- a/src/str.c
+++ b/src/str.c
@@ -160,12 +160,13 @@ void str_ncopy_into(str *dest, const str *src, size_t count) {
}
void str_ncopy_cstr_into(str *dest, const char *src, size_t count) {
- assert_str_is_valid(dest);
assert(src);
- dest->len = count;
- if (dest->cap < count + 1)
+ if (!str_is_valid(dest))
+ *dest = str_new_with_capacity(count + 1);
+ else if (dest->cap < count + 1)
str_reserve_exact(dest, count + 1);
memcpy(dest->data, src, count);
+ dest->len = count;
dest->data[count] = 0;
}
@@ -743,15 +744,21 @@ ptrdiff_t str_slc_find_char_right(const str_slc s, char c) {
}
str str_from_after_delim(str *arg, char delimiter) {
- size_t i = str_find_char_right(arg, delimiter);
- str res = str_slice_to_str(arg, i + 1, arg->len);
- return res;
+ return str_from_after_delim_str_slc(_strslc(arg), delimiter);
+}
+
+str str_from_after_delim_str_slc(str_slc arg, char delimiter) {
+ size_t i = str_slc_find_char_right(arg, delimiter);
+ return str_slc_slice_to_str(arg, i + 1, arg.len);
}
str str_from_before_delim(str *arg, char delimiter) {
- size_t i = str_find_char(arg, delimiter);
- str res = str_slice_to_str(arg, i + 1, arg->len);
- return res;
+ return str_from_before_delim_str_slc(_strslc(arg), delimiter);
+}
+
+str str_from_before_delim_str_slc(str_slc arg, char delimiter) {
+ size_t i = str_slc_find_char(arg, delimiter);
+ return str_slc_slice_to_str(arg, i + 1, arg.len);
}
str_slc str_slc_from_after_delim(str_slc arg, char delimiter) {