From 556d0dfce7577d6bad33d246a37f00a7627c295a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 24 Aug 2023 17:55:39 +0200 Subject: [PATCH] Add --cinemas-file option to KDM CLI. --- src/lib/kdm_cli.cc | 12 +++++++++++- test/kdm_cli_test.cc | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/lib/kdm_cli.cc b/src/lib/kdm_cli.cc index 23a60c9ad..3402fa71c 100644 --- a/src/lib/kdm_cli.cc +++ b/src/lib/kdm_cli.cc @@ -74,6 +74,7 @@ help (std::function out) out (" -S, --screen screen name (when using -C) or screen name (to filter screens when using -c)"); out (" -C, --certificate file containing projector certificate"); out (" -T, --trusted-device file containing a trusted device's certificate"); + out (" --cinemas-file use the given file as a list of cinemas instead of the current configuration"); out (" --list-cinemas list known cinemas from the DCP-o-matic settings"); out (" --list-dkdm-cpls list CPLs for which DCP-o-matic has DKDMs"); out (""); @@ -454,6 +455,7 @@ try bool disable_forensic_marking_picture = false; optional disable_forensic_marking_audio; bool email = false; + optional cinemas_file; program_name = argv[0]; @@ -482,10 +484,11 @@ try { "trusted-device", required_argument, 0, 'T' }, { "list-cinemas", no_argument, 0, 'B' }, { "list-dkdm-cpls", no_argument, 0, 'D' }, + { "cinemas-file", required_argument, 0, 'E' }, { 0, 0, 0, 0 } }; - int c = getopt_long (argc, argv, "ho:K:Z:f:t:d:F:pae::zvc:S:C:T:BD", long_options, &option_index); + int c = getopt_long (argc, argv, "ho:K:Z:f:t:d:F:pae::zvc:S:C:T:BDE:", long_options, &option_index); if (c == -1) { break; @@ -575,9 +578,16 @@ try case 'D': list_dkdm_cpls = true; break; + case 'E': + cinemas_file = optarg; + break; } } + if (cinemas_file) { + Config::instance()->set_cinemas_file(*cinemas_file); + } + if (certificate) { /* Make a new screen and add it to the current cinema */ dcp::CertificateChain chain(dcp::file_to_string(*certificate)); diff --git a/test/kdm_cli_test.cc b/test/kdm_cli_test.cc index c91cb64f4..4114cebd4 100644 --- a/test/kdm_cli_test.cc +++ b/test/kdm_cli_test.cc @@ -172,3 +172,26 @@ BOOST_AUTO_TEST_CASE(kdm_cli_select_screen) } +BOOST_AUTO_TEST_CASE(kdm_cli_specify_cinemas_file) +{ + ConfigRestorer cr; + + setup_test_config(); + + vector args = { + "kdm_cli", + "--cinemas-file", + "test/data/cinemas.xml", + "--list-cinemas" + }; + + vector output; + auto const error = run(args, output); + BOOST_CHECK(!error); + + BOOST_REQUIRE_EQUAL(output.size(), 3U); + BOOST_CHECK_EQUAL(output[0], "stinking dump ()"); + BOOST_CHECK_EQUAL(output[1], "classy joint ()"); + BOOST_CHECK_EQUAL(output[2], "Great ()"); +} + -- 2.30.2