diff options
-rw-r--r-- | include/delivery.h | 12 | ||||
-rw-r--r-- | src/lib/core/delivery_artifactory.c | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/include/delivery.h b/include/delivery.h index 2ab25d1..40ca3e6 100644 --- a/include/delivery.h +++ b/include/delivery.h @@ -424,6 +424,9 @@ int populate_mission_ini(struct Delivery **ctx, int render_mode); void validate_delivery_ini(struct INIFILE *ini); int filter_repo_tags(char *repo, struct StrList *patterns); + +#define DELIVERY_NOT_FOUND 0 +#define DELIVERY_FOUND 1 /** * Determine whether a release on-disk matches the release name in use * @param ctx Delivery context @@ -433,4 +436,13 @@ int delivery_exists(struct Delivery *ctx); int delivery_overlay_packages_from_env(struct Delivery *ctx, const char *env_name); +/** + * Retrieve remote deliveries associated with the current version series + * @param ctx Delivery context + * @return -1 on error + * @return 1 on failure + * @return 0 on success + */ +int delivery_series_sync(struct Delivery *ctx); + #endif //STASIS_DELIVERY_H diff --git a/src/lib/core/delivery_artifactory.c b/src/lib/core/delivery_artifactory.c index b69615e..9ad5829 100644 --- a/src/lib/core/delivery_artifactory.c +++ b/src/lib/core/delivery_artifactory.c @@ -185,3 +185,20 @@ int delivery_mission_render_files(struct Delivery *ctx) { return 0; } +int delivery_series_sync(struct Delivery *ctx) { + struct JFRT_Download dl = {0}; + + char *remote_dir = NULL; + if (asprintf(&remote_dir, "%s/%s/%s/(*)", globals.jfrog.repo, ctx->meta.mission, ctx->info.build_name) < 0) { + SYSERROR("%s", "Unable to allocate bytes for remote directory path"); + return -1; + } + + char *dest_dir = NULL; + if (asprintf(&dest_dir, "%s/{1}", ctx->storage.output_dir) < 0) { + SYSERROR("%s", "Unable to allocate bytes for destination directory path"); + return -1; + } + + return jfrog_cli_rt_download(&ctx->deploy.jfrog_auth, &dl, remote_dir, dest_dir); +} |