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>
Tue, 3 May 2022 20:15:44 +0000 (21:15 +0100)
Forwarded: https://github.com/haiwen/seafile-client/pull/1223

Gbp-Pq: Name 0004-Add-cli-help-and-version-option.patch

src/main.cpp

index 6783ee29731e82c2909f71aaf9bf6acbff82acac..800fd908ceb9d7f9971d5d79fa639339abda3fd1 100644 (file)
@@ -74,11 +74,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' },
@@ -93,6 +124,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;