87 int ret = EXIT_FAILURE; |
88 int ret = EXIT_FAILURE; |
88 if(!strcmp(cmd, "pull")) { |
89 if(!strcmp(cmd, "pull")) { |
89 ret = cmd_pull(args); |
90 ret = cmd_pull(args); |
90 } else if(!strcmp(cmd, "push")) { |
91 } else if(!strcmp(cmd, "push")) { |
91 ret = cmd_push(args); |
92 ret = cmd_push(args); |
|
93 } else if(!strcmp(cmd, "add-directory")) { |
|
94 ret = cmd_add_directory(args); |
92 } else if(!strcmp(cmd, "list-directories")) { |
95 } else if(!strcmp(cmd, "list-directories")) { |
93 ret = list_syncdirs(); |
96 ret = list_syncdirs(); |
94 } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") || !strcasecmp(cmd, "--version")) { |
97 } else if(!strcasecmp(cmd, "version") || !strcasecmp(cmd, "-version") || !strcasecmp(cmd, "--version")) { |
95 #ifdef DEBUG |
98 #ifdef DEBUG |
96 fprintf(stderr, "dav-sync %s unstable\n", DAV_VERSION); |
99 fprintf(stderr, "dav-sync %s unstable\n", DAV_VERSION); |
115 fprintf(stderr, "Options:\n"); |
118 fprintf(stderr, "Options:\n"); |
116 fprintf(stderr, " -c Disable conflict detection\n\n"); |
119 fprintf(stderr, " -c Disable conflict detection\n\n"); |
117 //fprintf(stderr, " -r Read changes from stdin\n\n"); |
120 //fprintf(stderr, " -r Read changes from stdin\n\n"); |
118 |
121 |
119 fprintf(stderr, "Config commands:\n"); |
122 fprintf(stderr, "Config commands:\n"); |
|
123 fprintf(stderr, " add-directory\n"); |
120 fprintf(stderr, " list-directories\n\n"); |
124 fprintf(stderr, " list-directories\n\n"); |
121 } |
125 } |
122 |
126 |
123 static int res_matches_filter(SyncDirectory *dir, char *res_path) { |
127 static int res_matches_filter(SyncDirectory *dir, char *res_path) { |
124 // trash filter |
128 // trash filter |
1028 |
1032 |
1029 return ret; |
1033 return ret; |
1030 } |
1034 } |
1031 |
1035 |
1032 |
1036 |
1033 |
1037 int cmd_add_directory(CmdArgs *args) { |
|
1038 printf("Each sync directory must have an unique name.\n"); |
|
1039 char *name = assistant_getcfg("name"); |
|
1040 if(!name) { |
|
1041 fprintf(stderr, "Abort\n"); |
|
1042 return -1; |
|
1043 } |
|
1044 if(scfg_get_dir(name)) { |
|
1045 fprintf(stderr, "Directory %s already exists.\nAbort\n", name); |
|
1046 return -1; |
|
1047 } |
|
1048 |
|
1049 printf("Enter local directory path.\n"); |
|
1050 char *path = assistant_getcfg("path"); |
|
1051 if(!path) { |
|
1052 fprintf(stderr, "Abort\n"); |
|
1053 return -1; |
|
1054 } |
|
1055 |
|
1056 printf("Enter webdav repository name.\n"); |
|
1057 char *repository = assistant_getcfg("repository"); |
|
1058 if(!repository) { |
|
1059 fprintf(stderr, "Abort\n"); |
|
1060 return -1; |
|
1061 } |
|
1062 if(!get_repository(sstr(repository))) { |
|
1063 fprintf(stderr, "Repository %s doesn't exist.\nAbort\n", repository); |
|
1064 return -1; |
|
1065 } |
|
1066 |
|
1067 printf("Enter collection relative to the repository base url.\n"); |
|
1068 char *collection = assistant_getdefcfg("collection", "/"); |
|
1069 |
|
1070 char *db = generate_db_name(name); |
|
1071 |
|
1072 SyncDirectory dir; |
|
1073 memset(&dir, 0, sizeof(SyncDirectory)); |
|
1074 dir.name = name; |
|
1075 dir.path = path; |
|
1076 dir.repository = repository; |
|
1077 dir.collection = collection; |
|
1078 dir.trash = ".trash"; |
|
1079 dir.database = db; |
|
1080 |
|
1081 int ret = 0; |
|
1082 if(add_directory(&dir)) { |
|
1083 fprintf(stderr, "Cannot write sync.xml\n"); |
|
1084 ret = -1; |
|
1085 } else { |
|
1086 printf("\nAdded directory: %s (%s)\n", name, path); |
|
1087 } |
|
1088 |
|
1089 free(name); |
|
1090 free(path); |
|
1091 free(repository); |
|
1092 free(collection); |
|
1093 free(db); |
|
1094 |
|
1095 return ret; |
|
1096 } |