int cli_repo_client(void* data, int argc, char* argv[]) {
static const struct command commands[] = {
- { "list", cli_repo_list, 0, 0, 0 },
+ { "list", cli_repo_list, 1, 1, 0 },
{ "show", cli_repo_show, 2, 2, 0 },
{ NULL },
};
static const char* doc = "Lists all repositories";
+struct config {
+ const char* distro;
+};
+
+static error_t parse(int key, char* arg, struct argp_state* state, void* data) {
+ struct config* config = data;
+
+ switch (key) {
+ case ARGP_KEY_ARG:
+ if (!config->distro)
+ config->distro = arg;
+
+ else
+ argp_usage(state);
+ break;
+
+ default:
+ return ARGP_ERR_UNKNOWN;
+ }
+
+ return 0;
+}
+
int cli_repo_list(void* data, int argc, char* argv[]) {
struct pakfire_buildservice* service = NULL;
struct json_object* repos = NULL;
+ struct config config = {};
int r;
struct cli_config* cli_config = data;
// Parse the command line
- r = cli_parse(NULL, NULL, NULL, doc, NULL, argc, argv, NULL);
+ r = cli_parse(NULL, NULL, NULL, doc, parse, argc, argv, &config);
if (r)
goto ERROR;
goto ERROR;
// List repos
- r = pakfire_buildservice_list_repos(service, cli_config->distro, &repos);
+ r = pakfire_buildservice_list_repos(service, config.distro, &repos);
if (r)
goto ERROR;