aboutsummaryrefslogtreecommitdiff
path: root/src/delivery.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2024-07-06 09:49:51 -0400
committerGitHub <noreply@github.com>2024-07-06 09:49:51 -0400
commit8ce824ac4b2f526331093a7150e643700efd4d20 (patch)
tree99e27dee24e82d78941ded4c510e1bac57c3f015 /src/delivery.c
parentabe87056faa6ed02aff3bbf77c1fd78b713a0864 (diff)
downloadstasis-8ce824ac4b2f526331093a7150e643700efd4d20.tar.gz
Add github.c and github.h (#9)
* Add github.c and github.h * Implements get_github_release_notes() * Remove unused variables * Fix circular dependency on tplfunc_frame * Remove predeclaration of tplfunc_frame * tpl_register_func accepts pointer to void instead * tpl_register_func sets maximum number of arguments * Frame is generated within tpl_register_func * Improve template function error handling and return/output management * Remove redundant extern statement * Include github.h and template_func_proto.h in core.h * Expose get_github_release_notes_tplfunc_entrypoint function to template engine * Add template_func_proto.c and template_func_proto.h * Replace free() with guard variant * Fix test_template::test_tpl_register_func * Fix tests * Fix tests * cmd should be at least PATH_MAX in size. * Magic number caused failure to install conda with a long installation path * Implement get_github_release_notes_auto function that bases release note data off test contexts * Disable overwriting releases by default * Add automatic release note generation function call to release_notes.md.in * Fix test_tpl_register_func() * Add enough space for tar command plus a path * Fix circular include * Github functions do not require access to core.h anyway * Add comments to union * Update README to mention template function availability * Add EnvCtl structure * Add runtime checks to avoid running all the way to the end only to be met with a configuration error. * Rename GITHUB to GH * Development docs pre-rough-draft
Diffstat (limited to 'src/delivery.c')
-rw-r--r--src/delivery.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/delivery.c b/src/delivery.c
index 278647c..7bedef3 100644
--- a/src/delivery.c
+++ b/src/delivery.c
@@ -1419,7 +1419,7 @@ void delivery_install_conda(char *install_script, char *conda_install_dir) {
// Proceed with the installation
// -b = batch mode (non-interactive)
- char cmd[255] = {0};
+ char cmd[PATH_MAX] = {0};
snprintf(cmd, sizeof(cmd) - 1, "%s %s -b -p %s",
find_program("bash"),
install_script,
@@ -1476,7 +1476,7 @@ void delivery_defer_packages(struct Delivery *ctx, int type) {
struct StrList *filtered = NULL;
filtered = strlist_init();
- for (size_t i = 0, z = 0; i < strlist_count(dataptr); i++) {
+ for (size_t i = 0; i < strlist_count(dataptr); i++) {
int ignore_pkg = 0;
name = strlist_item(dataptr, i);
@@ -1494,7 +1494,6 @@ void delivery_defer_packages(struct Delivery *ctx, int type) {
if (strstr(name, ctx->tests[x].name)) {
version = ctx->tests[x].version;
ignore_pkg = 1;
- z++;
break;
}
}
@@ -2164,4 +2163,21 @@ int delivery_fixup_test_results(struct Delivery *ctx) {
closedir(dp);
return 0;
+}
+
+int delivery_exists(struct Delivery *ctx) {
+ // TODO: scan artifactory repo for the same information
+ char release_pattern[PATH_MAX] = {0};
+ sprintf(release_pattern, "*%s*", ctx->info.release_name);
+ struct StrList *files = listdir(ctx->storage.delivery_dir);
+ for (size_t i = 0; i < strlist_count(files); i++) {
+ char *filename = strlist_item(files, i);
+ int release_exists = fnmatch(release_pattern, filename, FNM_PATHNAME);
+ if (!globals.enable_overwrite && !release_exists) {
+ guard_strlist_free(&files);
+ return 1;
+ }
+ }
+ guard_strlist_free(&files);
+ return 0;
} \ No newline at end of file