#include "sync.h"
#include "update.h"
+#define MAX_REPOS 16
+
struct config {
char* file;
char* arch;
int flags;
int loglevel;
int yes;
+
+ // Repos
+ const char* enable_repos[MAX_REPOS];
+ unsigned int num_enable_repos;
+ const char* disable_repos[MAX_REPOS];
+ unsigned int num_disable_repos;
};
static int cli_main(struct pakfire* pakfire, int argc, char* argv[]) {
case ARG_VERSION:
version();
- // XXX Handle enable/disable repo
+ case ARG_ENABLE_REPO:
+ if (config->num_enable_repos >= MAX_REPOS)
+ return -ENOBUFS;
+
+ config->enable_repos[config->num_enable_repos++] = optarg;
+ break;
+
+ case ARG_DISABLE_REPO:
+ if (config->num_disable_repos >= MAX_REPOS)
+ return -ENOBUFS;
+
+ config->disable_repos[config->num_disable_repos++] = optarg;
+ break;
case '?':
return -EINVAL;
return 0;
}
+static void cli_set_repo_enabled(struct pakfire* pakfire, const char* name, int enabled) {
+ struct pakfire_repo* repo = NULL;
+
+ // Find the repository
+ repo = pakfire_get_repo(pakfire, name);
+
+ // Ignore if the repository could not be found
+ if (!repo)
+ return;
+
+ // Set status
+ pakfire_repo_set_enabled(repo, enabled);
+ pakfire_repo_unref(repo);
+}
+
int main(int argc, char* argv[]) {
struct pakfire* pakfire = NULL;
FILE* f = NULL;
if (r)
goto ERROR;
+ // Enable repositories
+ for (unsigned int i = 0; i < config.num_enable_repos; i++)
+ cli_set_repo_enabled(pakfire, config.enable_repos[i], 1);
+
+ // Disable repositories
+ for (unsigned int i = 0; i < config.num_disable_repos; i++)
+ cli_set_repo_enabled(pakfire, config.disable_repos[i], 0);
+
// Run a command
r = cli_main(pakfire, argc - optind, argv + optind);