Rename in debian changelog.
[dcpomatic.git] / src / tools / servomatic_cli.cc
index 3ad73faf95b2309a836b1faa88386f80ca39703e..76d0850341619c9638861e27538ee7f22285ea5b 100644 (file)
@@ -25,6 +25,7 @@
 #include <vector>
 #include <unistd.h>
 #include <errno.h>
+#include <getopt.h>
 #include <boost/array.hpp>
 #include <boost/asio.hpp>
 #include <boost/algorithm/string.hpp>
 #include "scaler.h"
 #include "image.h"
 #include "log.h"
+#include "version.h"
+
+using std::cerr;
+using std::string;
+using std::cout;
+using boost::shared_ptr;
+
+static void
+help (string n)
+{
+       cerr << "Syntax: " << n << " [OPTION]\n"
+            << "  -v, --version      show DCP-o-matic version\n"
+            << "  -h, --help         show this help\n"
+            << "  -t, --threads      number of parallel encoding threads to use\n";
+}
 
 int
-main ()
+main (int argc, char* argv[])
 {
+       int num_threads = Config::instance()->num_local_encoding_threads ();
+
+       int option_index = 0;
+       while (1) {
+               static struct option long_options[] = {
+                       { "version", no_argument, 0, 'v'},
+                       { "help", no_argument, 0, 'h'},
+                       { "threads", required_argument, 0, 't'},
+                       { 0, 0, 0, 0 }
+               };
+
+               int c = getopt_long (argc, argv, "vht:", long_options, &option_index);
+
+               if (c == -1) {
+                       break;
+               }
+
+               switch (c) {
+               case 'v':
+                       cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n";
+                       exit (EXIT_SUCCESS);
+               case 'h':
+                       help (argv[0]);
+                       exit (EXIT_SUCCESS);
+               case 't':
+                       num_threads = atoi (optarg);
+                       break;
+               }
+       }
+
        Scaler::setup_scalers ();
-       FileLog log ("servomatic.log");
-       Server server (&log);
-       server.run ();
+       shared_ptr<FileLog> log (new FileLog ("servomatic.log"));
+       Server server (log);
+       server.run (num_threads);
        return 0;
 }