Add --config option to map (#2543).
[dcpomatic.git] / src / lib / map_cli.cc
index 1b99afa945fcf4f5157cdaf7ba4e46fe6944748b..c95d7f1a1aaa4c2f3bb2b5f2eda6ddf2b80c7bb0 100644 (file)
@@ -63,6 +63,7 @@ help(std::function<void (string)> out)
        out("  -s, --soft-link  using soft links instead of copying");
        out("  -d, --assets-dir look in this directory for assets (can be given more than once)");
        out("  -r, --rename     rename all files to <uuid>.<mxf|xml>");
+       out("  --config <dir>   directory containing config.xml and cinemas.xml");
 }
 
 
@@ -74,6 +75,7 @@ map_cli(int argc, char* argv[], std::function<void (string)> out)
        bool soft_link = false;
        bool rename = false;
        vector<boost::filesystem::path> assets_dir;
+       optional<boost::filesystem::path> config_dir;
 
        /* This makes it possible to call getopt several times in the same executable, for tests */
        optind = 0;
@@ -87,10 +89,11 @@ map_cli(int argc, char* argv[], std::function<void (string)> out)
                        { "soft-link", no_argument, 0, 's' },
                        { "assets-dir", required_argument, 0, 'd' },
                        { "rename", no_argument, 0, 'r' },
+                       { "config", required_argument, 0, 'c' },
                        { 0, 0, 0, 0 }
                };
 
-               int c = getopt_long(argc, argv, "ho:lsd:r", long_options, &option_index);
+               int c = getopt_long(argc, argv, "ho:lsd:rc:", long_options, &option_index);
 
                if (c == -1) {
                        break;
@@ -117,6 +120,9 @@ map_cli(int argc, char* argv[], std::function<void (string)> out)
                case 'r':
                        rename = true;
                        break;
+               case 'c':
+                       config_dir = optarg;
+                       break;
                }
        }
 
@@ -127,6 +133,10 @@ map_cli(int argc, char* argv[], std::function<void (string)> out)
                exit(EXIT_FAILURE);
        }
 
+       if (config_dir) {
+               State::override_path = *config_dir;
+       }
+
        vector<boost::filesystem::path> cpl_filenames;
        for (int i = optind; i < argc; ++i) {
                cpl_filenames.push_back(argv[i]);