Add dcp::LocalTime::millisecond().
[libdcp.git] / tools / dcpverify.cc
index 4d670b8e3544d94c6dbc7284aaa75ff5ad246019..b9b3c9974c78168905afe54520d73c14c46fc259 100644 (file)
@@ -128,14 +128,38 @@ main (int argc, char* argv[])
                }
        };
 
-       auto progress = [](float) {};
+       auto progress = [quiet](float amount) {
+               if (quiet) {
+                       return;
+               }
+               int const width = 60;
+               int const index = std::rint(amount * width);
+               cout << "[";
+               for (int i = 0; i < width; ++i) {
+                       if (i < index) {
+                               std::cout << "=";
+                       } else if (i == index) {
+                               std::cout << ">";
+                       } else {
+                               std::cout << " ";
+                       }
+               }
+               cout << "] " << std::rint(amount * 100) << "%\r";
+               cout.flush();
+       };
 
        vector<boost::filesystem::path> directories;
        directories.push_back (argv[optind]);
        auto notes = dcp::verify(directories, stage, progress);
        dcp::filter_notes (notes, ignore_missing_assets);
 
+       if (!quiet) {
+               cout << "\n";
+       }
+
        bool failed = false;
+       bool bv21_failed = false;
+       bool warned = false;
        for (auto i: notes) {
                if (ignore_bv21_smpte && i.code() == dcp::VerificationNote::Code::INVALID_STANDARD) {
                        continue;
@@ -147,14 +171,19 @@ main (int argc, char* argv[])
                        break;
                case dcp::VerificationNote::Type::BV21_ERROR:
                        cout << "Bv2.1 error: " << note_to_string(i) << "\n";
+                       bv21_failed = true;
                        break;
                case dcp::VerificationNote::Type::WARNING:
                        cout << "Warning: " << note_to_string(i) << "\n";
+                       warned = true;
                        break;
                }
        }
 
        if (!failed && !quiet) {
+               if (bv21_failed || warned) {
+                       cout << "\n";
+               }
                cout << "DCP verified OK.\n";
        }