Add cli help and version option
authorMoritz Schlarb <schlarbm@uni-mainz.de>
Tue, 8 Oct 2019 10:10:12 +0000 (12:10 +0200)
committerMoritz Schlarb <schlarbm@uni-mainz.de>
Fri, 8 Jan 2021 20:43:38 +0000 (20:43 +0000)
Gbp-Pq: Name 0004-Add-cli-help-and-version-option.patch

src/main.cpp

index d55e9b5ae34241ba6b0dff26f4d8708701a0752c..d8d272ec3e261e07f53ec981bb9da5e15dc9f111 100644 (file)
@@ -88,11 +88,42 @@ void setupSettingDomain()
     QCoreApplication::setApplicationName(QString("%1 Client").arg(getBrand()));
 }
 
+void do_version() {
+       // from src/ui/about-dialog.cpp
+    QString version_text = QString("%1 Client %2")
+               .arg(getBrand())
+               .arg(STRINGIZE(SEAFILE_CLIENT_VERSION))
+#ifdef SEAFILE_CLIENT_REVISION
+               .append(" REV %1")
+               .arg(STRINGIZE(SEAFILE_CLIENT_REVISION))
+#endif
+    ;
+       printf("%s\n", toCStr(version_text));
+}
+
+void do_help(int argc, char *argv[]) {
+       printf("Usage: %s [options]\n", argv[0]);
+       printf("\n");
+       printf("Options:\n");
+       printf("  -V,--version\n");
+       printf("  -h,--help\n");
+       printf("  -c,--config-dir=<ccnet_conf_dir>\n");
+       printf("  -d,--data-dir=<seafile_data_dir>\n");
+       printf("  -K,--stop\n");
+       printf("  -D,--delay\n");
+       printf("  -X,--remove-user-data\n");
+       printf("  -f,--open-local-file=<url>\n");
+       printf("  --stdout\n");
+       printf("  -P,--ping\n");
+}
+
 void handleCommandLineOption(int argc, char *argv[])
 {
     int c;
-    static const char *short_options = "KDXPc:d:f:";
+    static const char *short_options = "VhKDXPc:d:f:";
     static const struct option long_options[] = {
+        { "version", no_argument, NULL, 'V' },
+        { "help", no_argument, NULL, 'h' },
         { "config-dir", required_argument, NULL, 'c' },
         { "data-dir", required_argument, NULL, 'd' },
         { "stop", no_argument, NULL, 'K' },
@@ -107,6 +138,12 @@ void handleCommandLineOption(int argc, char *argv[])
     while ((c = getopt_long (argc, argv, short_options,
                              long_options, NULL)) != EOF) {
         switch (c) {
+        case 'V':
+            do_version();
+            exit(0);
+        case 'h':
+            do_help(argc, argv);
+            exit(0);
         case 'c':
             g_setenv ("CCNET_CONF_DIR", optarg, 1);
             break;