aboutsummaryrefslogtreecommitdiff
path: root/snag/src
diff options
context:
space:
mode:
Diffstat (limited to 'snag/src')
-rw-r--r--snag/src/main.c7
-rw-r--r--snag/src/package.h16
-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.h2
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