#include "../../include/all.h" #include "../common.h" #include #include #include int main(int argc, char *argv[]) { lm_ctx_resolve_list_t *list = NULL; lm_pkg_t *pkg = NULL, *cur = NULL; lm_ctx_t ctx; int ret = EXIT_FAILURE; char pooldir[strlen(TEMP_DIR) + 10]; sprintf(pooldir, "%s/%s", DATA_DIR, "pool"); if (argc != 4) { printf("usage: %s \n", argv[0]); return ret; } if (!lm_ctx_new(&ctx, ROOT_DIR, TEMP_DIR, DATA_DIR)) { printf("failed to init the ctx: %s (%d)\n", lm_strerror(), lm_error()); goto end; } if (lm_ctx_pool_add(&ctx, argv[2], argv[3], pooldir) == NULL) { printf("failed to add pool: %s (%d)\n", lm_strerror(), lm_error()); goto end; } lm_ctx_ping(&ctx, NULL, NULL); lm_ctx_sync(&ctx, true, NULL, NULL); if ((pkg = lm_ctx_pool_find(&ctx, argv[1], NULL)) == NULL) { printf("failed to find package: %s (%d)\n", lm_strerror(), lm_error()); goto end; } printf("resolving package: %s (%s)...\n", pkg->data.name, pkg->data.version); if ((list = lm_ctx_resolve(&ctx, pkg, NULL)) == NULL) { printf("failed to resolve package: %s (%d)\n", lm_strerror(), lm_error()); goto end; } while ((cur = lm_ctx_resolve_next(list)) != NULL) { printf("downloading package: %s (%s)...\n", cur->data.name, cur->data.version); if (!lm_ctx_download(&ctx, cur, NULL, NULL)) { printf("failed to download package: %s (%d)\n", lm_strerror(), lm_error()); goto end; } } while ((cur = lm_ctx_resolve_next(list)) != NULL) { printf("installing package: %s (%s)...\n", cur->data.name, cur->data.version); if (!lm_ctx_install(&ctx, cur, false, NULL, NULL)) { printf("failed to install the package: %s (%d)\n", lm_strerror(), lm_error()); goto end; } } ret = EXIT_SUCCESS; end: lm_ctx_resolve_free(list); lm_ctx_free(&ctx); return ret; }