diff options
Diffstat (limited to 'snag/src')
| -rw-r--r-- | snag/src/main.c | 7 | ||||
| -rw-r--r-- | snag/src/package.h | 16 | ||||
| -rw-r--r-- | snag/src/package_db.c (renamed from snag/src/pkg_db.c) | 8 | ||||
| -rw-r--r-- | snag/src/package_db.h (renamed from snag/src/pkg_db.h) | 17 | ||||
| -rw-r--r-- | snag/src/util.h | 2 |
5 files changed, 29 insertions, 21 deletions
diff --git a/snag/src/main.c b/snag/src/main.c index 0429fda..7d5ea58 100644 --- a/snag/src/main.c +++ b/snag/src/main.c @@ -2,7 +2,7 @@ #include "util.h" #include "libargs/args.h" -#include "pkg_db.h" +#include "package_db.h" int cmd_install(char* cmd_name, ArgParser* parser); @@ -37,13 +37,14 @@ int cmd_install(char* cmd_name, ArgParser* parser) { // install each package specified for (int i = 0; i < ap_count_args(parser); i++) { - if (i != 0) printf("\n"); + if (i != 0) print("\n"); // load package description char* pkgid = ap_get_arg_at_index(parser, i); package_info_t info; if (load_package_info(pkgid, &info)) { - printf("Installing %s - %s\n", info.attrs.name, info.attrs.desc); + print("Installing %s - %s\n", info.attrs.name, info.attrs.desc); + print("Downloading '%s'\n", info.attrs.source_url); run_package_install(&info); } } diff --git a/snag/src/package.h b/snag/src/package.h new file mode 100644 index 0000000..3ff58b6 --- /dev/null +++ b/snag/src/package.h @@ -0,0 +1,16 @@ +typedef struct { + char* id; + char* name; + char* desc; + char* webpage; + char* license; + char* version; + char* source_url; + char* source_hash; + char buffer[4069]; +} package_attrs_t; + +typedef struct { + char* script_path; + package_attrs_t attrs; +} package_info_t; diff --git a/snag/src/pkg_db.c b/snag/src/package_db.c index c35e47b..0bae257 100644 --- a/snag/src/pkg_db.c +++ b/snag/src/package_db.c @@ -1,12 +1,12 @@ -#include "pkg_db.h" +#include "package_db.h" #include "util.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> -#include <errno.h> #include <sys/wait.h> +#include <errno.h> #define PKG_INFO_CMD "./scripts/get_pkg_attrs.sh" #define PKG_INST_CMD "./scripts/run_pkg_install.sh" @@ -106,6 +106,10 @@ bool load_package_info(char* pkgid, package_info_t* info) { info->attrs.license = &info->attrs.buffer[i]; break; case 'v': info->attrs.version = &info->attrs.buffer[i]; break; + case 'u': + info->attrs.source_url = &info->attrs.buffer[i]; break; + case 'h': + info->attrs.source_hash = &info->attrs.buffer[i]; break; } for(;info->attrs.buffer[i] && i < bytes_read; i++); i++; diff --git a/snag/src/pkg_db.h b/snag/src/package_db.h index 0d34a61..bae1cdd 100644 --- a/snag/src/pkg_db.h +++ b/snag/src/package_db.h @@ -3,24 +3,11 @@ #include <stdbool.h> +#include "package.h" + // loads and allocates package attributes for the info struct. does not do // excessive validation, so this should be fine when loading lots of package // data -typedef struct { - char* id; - char* name; - char* desc; - char* webpage; - char* license; - char* version; - char buffer[4069]; -} package_attrs_t; - -typedef struct { - char* script_path; - package_attrs_t attrs; -} package_info_t; - bool load_package_info(char* pkgid, package_info_t* info); void run_package_install(const package_info_t* info); diff --git a/snag/src/util.h b/snag/src/util.h index 3813903..eca4e4d 100644 --- a/snag/src/util.h +++ b/snag/src/util.h @@ -25,7 +25,7 @@ #define print(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__) // string functions -char* vastrcat_(int dummy, ...); #define vastrcat(...) vastrcat_(0, __VA_ARGS__, NULL) +char* vastrcat_(int dummy, ...); #endif |
