Add --no-encrypt with the same idea as the previous commit.
authorCarl Hetherington <cth@carlh.net>
Sat, 30 Sep 2023 10:09:00 +0000 (12:09 +0200)
committerCarl Hetherington <cth@carlh.net>
Sat, 30 Sep 2023 10:09:00 +0000 (12:09 +0200)
src/lib/create_cli.cc
src/lib/create_cli.h
test/create_cli_test.cc
test/data

index 495ccddc417a714f08280b000dee553e34639e1f..b0f7a843ebf4a3d2b9fa05274a0fa32755a8493f 100644 (file)
@@ -45,6 +45,7 @@ string CreateCLI::_help =
        "  -h, --help                    show this help\n"
        "  -n, --name <name>             film name\n"
        "  -t, --template <name>         template name\n"
+       "      --no-encrypt              make an unencrypted DCP\n"
        "  -e, --encrypt                 make an encrypted DCP\n"
        "  -c, --dcp-content-type <type> FTR, SHR, TLR, TST, XSN, RTG, TSR, POL, PSA or ADV\n"
        "  -f, --dcp-frame-rate <rate>   set DCP video frame rate (otherwise guessed from content)\n"
@@ -153,7 +154,9 @@ CreateCLI::CreateCLI (int argc, char* argv[])
                        return;
                }
 
-               if (a == "-e" || a == "--encrypt") {
+               if (a == "--no-encrypt") {
+                       _no_encrypt = claimed = true;
+               } else if (a == "-e" || a == "--encrypt") {
                        _encrypt = claimed = true;
                } else if (a == "--no-use-isdcf-name") {
                        _no_use_isdcf_name = claimed = true;
@@ -297,6 +300,10 @@ CreateCLI::CreateCLI (int argc, char* argv[])
                error = String::compose("%1: specify one of --twod or --threed, not both", argv[0]);
        }
 
+       if (_no_encrypt && _encrypt) {
+               error = String::compose("%1: specify one of --no-encrypt or --encrypt, not both", argv[0]);
+       }
+
        if (content.empty()) {
                error = String::compose("%1: no content specified", argv[0]);
                return;
@@ -330,7 +337,11 @@ CreateCLI::make_film() const
        film->set_dcp_content_type(_dcp_content_type);
        film->set_interop(_standard == dcp::Standard::INTEROP);
        film->set_use_isdcf_name(!_no_use_isdcf_name);
-       film->set_encrypted(_encrypt);
+       if (_no_encrypt) {
+               film->set_encrypted(false);
+       } else if (_encrypt) {
+               film->set_encrypted(true);
+       }
        if (_twod) {
                film->set_three_d(false);
        } else if (_threed) {
index dfc922b07b24854b70fe5b00f922b0f8d2ba94ea..ee15fb0b8565139c42d00a419ccb99cc31935103 100644 (file)
@@ -63,6 +63,7 @@ private:
        boost::optional<std::string> _template_name;
        std::string _name;
        Ratio const* _container_ratio = nullptr;
+       bool _no_encrypt = false;
        bool _encrypt = false;
        bool _twod = false;
        bool _threed = false;
index 8da07d5d5d9402637edbbb965752855a79d9acf4..3ebdcb81b7b88f41243d946a501dd59fff11f454 100644 (file)
@@ -111,6 +111,15 @@ BOOST_AUTO_TEST_CASE (create_cli_test)
        cc = run ("dcpomatic2_create x --standard SMPTEX");
        BOOST_CHECK (cc.error);
 
+       cc = run("dcpomatic2_create x --no-encrypt");
+       BOOST_CHECK(cc._no_encrypt);
+
+       cc = run("dcpomatic2_create x --encrypt");
+       BOOST_CHECK(cc._encrypt);
+
+       cc = run("dcpomatic2_create x --no-encrypt --encrypt");
+       BOOST_CHECK(cc.error);
+
        cc = run("dcpomatic2_create x --twod");
        BOOST_CHECK(cc._twod);
 
@@ -217,10 +226,14 @@ BOOST_AUTO_TEST_CASE(create_cli_template_test)
 
        Config::override_path = "test/data";
 
-       auto cc = run("dcpomatic2_create test/data/flat_red.png --template 2d");
+       auto cc = run("dcpomatic2_create test/data/flat_red.png");
        auto film = cc.make_film();
        BOOST_CHECK(!film->three_d());
 
+       cc = run("dcpomatic2_create test/data/flat_red.png --template 2d");
+       film = cc.make_film();
+       BOOST_CHECK(!film->three_d());
+
        cc = run("dcpomatic2_create test/data/flat_red.png --template 2d --threed");
        film = cc.make_film();
        BOOST_CHECK(film->three_d());
@@ -232,5 +245,25 @@ BOOST_AUTO_TEST_CASE(create_cli_template_test)
        cc = run("dcpomatic2_create test/data/flat_red.png --template 3d --twod");
        film = cc.make_film();
        BOOST_CHECK(!film->three_d());
+
+       cc = run("dcpomatic2_create test/data/flat_red.png");
+       film = cc.make_film();
+       BOOST_CHECK(!film->encrypted());
+
+       cc = run("dcpomatic2_create test/data/flat_red.png --template unencrypted");
+       film = cc.make_film();
+       BOOST_CHECK(!film->encrypted());
+
+       cc = run("dcpomatic2_create test/data/flat_red.png --template unencrypted --encrypt");
+       film = cc.make_film();
+       BOOST_CHECK(film->encrypted());
+
+       cc = run("dcpomatic2_create test/data/flat_red.png --template encrypted");
+       film = cc.make_film();
+       BOOST_CHECK(film->encrypted());
+
+       cc = run("dcpomatic2_create test/data/flat_red.png --template encrypted --no-encrypt");
+       film = cc.make_film();
+       BOOST_CHECK(!film->encrypted());
 }
 
index ab92d786fe2069ef94d79c53945939265e18d7b4..31f3a1e8d0217e065b9a2e6efbebe194f4dbae78 160000 (submodule)
--- a/test/data
+++ b/test/data
@@ -1 +1 @@
-Subproject commit ab92d786fe2069ef94d79c53945939265e18d7b4
+Subproject commit 31f3a1e8d0217e065b9a2e6efbebe194f4dbae78