132 ret = cmd_add_tag(args); |
132 ret = cmd_add_tag(args); |
133 } else if(!strcmp(cmd, "remove-tag")) { |
133 } else if(!strcmp(cmd, "remove-tag")) { |
134 ret = cmd_remove_tag(args); |
134 ret = cmd_remove_tag(args); |
135 } else if(!strcmp(cmd, "update-tags")) { |
135 } else if(!strcmp(cmd, "update-tags")) { |
136 ret = cmd_update_tags(args); |
136 ret = cmd_update_tags(args); |
|
137 } else if(!strcmp(cmd, "list-tags")) { |
|
138 ret = cmd_list_tags(args); |
137 } else if(!strcmp(cmd, "add-dir") |
139 } else if(!strcmp(cmd, "add-dir") |
138 || !strcmp(cmd, "add-directory")) { |
140 || !strcmp(cmd, "add-directory")) { |
139 ret = cmd_add_directory(args); |
141 ret = cmd_add_directory(args); |
140 } else if(!strcmp(cmd, "list-dirs") |
142 } else if(!strcmp(cmd, "list-dirs") |
141 || !strcmp(cmd, "list-directories")) { |
143 || !strcmp(cmd, "list-directories")) { |
172 fprintf(stderr, " delete-conflicts <directory>\n"); |
174 fprintf(stderr, " delete-conflicts <directory>\n"); |
173 fprintf(stderr, " trash-info <directory>\n"); |
175 fprintf(stderr, " trash-info <directory>\n"); |
174 fprintf(stderr, " empty-trash <directory>\n"); |
176 fprintf(stderr, " empty-trash <directory>\n"); |
175 fprintf(stderr, " add-tag [-s <syncdir>] <file> <tag>\n"); |
177 fprintf(stderr, " add-tag [-s <syncdir>] <file> <tag>\n"); |
176 fprintf(stderr, " remove-tag [-s <syncdir>] <file> <tag>\n"); |
178 fprintf(stderr, " remove-tag [-s <syncdir>] <file> <tag>\n"); |
177 fprintf(stderr, " update-tags [-s <syncdir>] <file> [tags]\n\n"); |
179 fprintf(stderr, " update-tags [-s <syncdir>] <file> [tags]\n"); |
|
180 fprintf(stderr, " update-tags [-s <syncdir>] <file>\n\n"); |
178 |
181 |
179 fprintf(stderr, "Options:\n"); |
182 fprintf(stderr, "Options:\n"); |
180 fprintf(stderr, " -c Disable conflict detection\n"); |
183 fprintf(stderr, " -c Disable conflict detection\n"); |
181 fprintf(stderr, " -l Lock the repository before access\n"); |
184 fprintf(stderr, " -l Lock the repository before access\n"); |
182 fprintf(stderr, " -d Don't lock the repository\n"); |
185 fprintf(stderr, " -d Don't lock the repository\n"); |
2071 } |
2074 } |
2072 |
2075 |
2073 #define CMD_TAG_ADD 0 |
2076 #define CMD_TAG_ADD 0 |
2074 #define CMD_TAG_REMOVE 1 |
2077 #define CMD_TAG_REMOVE 1 |
2075 #define CMD_TAG_UPDATE 2 |
2078 #define CMD_TAG_UPDATE 2 |
|
2079 #define CMD_TAG_LIST 3 |
2076 int cmd_add_tag(CmdArgs *args) { |
2080 int cmd_add_tag(CmdArgs *args) { |
2077 if(args->argc != 2) { |
2081 if(args->argc != 2) { |
2078 fprintf(stderr, "Too %s arguments\n", args->argc <= 1 ? "few" : "many"); |
2082 fprintf(stderr, "Too %s arguments\n", args->argc <= 1 ? "few" : "many"); |
2079 return -1; |
2083 return -1; |
2080 } |
2084 } |
2093 if(args->argc < 1 || args->argc > 2) { |
2097 if(args->argc < 1 || args->argc > 2) { |
2094 fprintf(stderr, "Too %s arguments\n", args->argc < 1 ? "few" : "many"); |
2098 fprintf(stderr, "Too %s arguments\n", args->argc < 1 ? "few" : "many"); |
2095 return -1; |
2099 return -1; |
2096 } |
2100 } |
2097 return cmd_tagopt(args, CMD_TAG_UPDATE); |
2101 return cmd_tagopt(args, CMD_TAG_UPDATE); |
|
2102 } |
|
2103 |
|
2104 int cmd_list_tags(CmdArgs *args) { |
|
2105 if(args->argc != 1) { |
|
2106 fprintf(stderr, "Too %s arguments\n", args->argc <= 1 ? "few" : "many"); |
|
2107 return -1; |
|
2108 } |
|
2109 return cmd_tagopt(args, CMD_TAG_LIST); |
2098 } |
2110 } |
2099 |
2111 |
2100 int cmd_tagopt(CmdArgs *args, int cmd) { |
2112 int cmd_tagopt(CmdArgs *args, int cmd) { |
2101 SyncFile file; |
2113 SyncFile file; |
2102 int ret = 0; |
2114 int ret = 0; |
2121 |
2133 |
2122 LocalResource *localres = ucx_map_cstr_get(db->resources, file.path); |
2134 LocalResource *localres = ucx_map_cstr_get(db->resources, file.path); |
2123 UcxList *tags = NULL; |
2135 UcxList *tags = NULL; |
2124 DavBool store_tags = FALSE; |
2136 DavBool store_tags = FALSE; |
2125 |
2137 |
2126 if(cmd == CMD_TAG_ADD || cmd == CMD_TAG_REMOVE) { |
2138 if(cmd != CMD_TAG_UPDATE) { |
2127 char *tag = args->argv[1]; |
2139 char *tag = args->argv[1]; |
2128 char *tagcolor = NULL; // TODO: get color |
2140 char *tagcolor = NULL; // TODO: get color |
2129 |
2141 |
2130 tags = sync_get_file_tags(file.dir, localres, NULL); |
2142 tags = sync_get_file_tags(file.dir, localres, NULL); |
2131 UcxList *x = NULL; |
2143 UcxList *x = NULL; |
2132 UCX_FOREACH(elm, tags) { |
2144 UCX_FOREACH(elm, tags) { |
2133 DavTag *t = elm->data; |
2145 DavTag *t = elm->data; |
2134 if(!strcmp(t->name, tag)) { |
2146 if(cmd == CMD_TAG_LIST) { |
|
2147 printf("%s\n", t->name); |
|
2148 } else if(!strcmp(t->name, tag)) { |
2135 x = elm; |
2149 x = elm; |
2136 break; |
2150 break; |
2137 } |
2151 } |
2138 } |
2152 } |
2139 |
2153 |