diff -r ddda42712f39 -r 26fdeed98cd7 dav/main.c --- a/dav/main.c Wed May 30 20:07:19 2018 +0200 +++ b/dav/main.c Thu May 31 15:24:52 2018 +0200 @@ -141,6 +141,10 @@ } else if(!strcasecmp(cmd, "add-repository") || !strcasecmp(cmd, "add-repo")) { ret = cmd_add_repository(args); + } else if(!strcasecmp(cmd, "remove-repository") + || !strcasecmp(cmd, "remove-repo") + || !strcasecmp(cmd, "rm-repo")) { + ret = cmd_remove_repository(args); } else if(!strcasecmp(cmd, "list-repositories") || !strcasecmp(cmd, "list-repos")) { ret = list_repositories(); @@ -240,6 +244,7 @@ fprintf(stderr, "\n"); fprintf(stderr, "Config commands:\n"); fprintf(stderr, " add-repository\n"); + fprintf(stderr, " remove-repository\n"); fprintf(stderr, " list-repositories\n"); fprintf(stderr, " check-config\n"); fprintf(stderr, "\n"); @@ -1926,3 +1931,28 @@ return ret; } + +int cmd_remove_repository(CmdArgs *args) { + if(args->argc < 1) { + fprintf(stderr, "Too few arguments\n"); + fprintf(stderr, "Usage: dav remove-repository \n"); + return -1; + } + + for(int i = 0 ; i < args->argc ; i++) { + sstr_t reponame = sstr(args->argv[i]); + Repository* repo = get_repository(reponame); + if(repo) { + if(remove_repository(repo)) { + fprintf(stderr, "Cannot write config.xml\n"); + return -1; + } + } else { + fprintf(stderr, "Repository %s does not exist - skipped.\n", + reponame.ptr); + return -1; + } + } + + return -1; +}