summaryrefslogtreecommitdiff
path: root/src/lib/kdm.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-05-04 01:03:26 +0200
committerCarl Hetherington <cth@carlh.net>2020-05-04 01:03:26 +0200
commit7703a0d95f4188d4e7e9414afc6bfe3259cf1cdc (patch)
tree1325e5faa92fe80cfa898687320a97471f481a85 /src/lib/kdm.cc
parent107549f047c45a692f229a5023b4f26cd1301921 (diff)
All going downhill.dkdm
Diffstat (limited to 'src/lib/kdm.cc')
-rw-r--r--src/lib/kdm.cc49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/lib/kdm.cc b/src/lib/kdm.cc
new file mode 100644
index 000000000..b89fb1861
--- /dev/null
+++ b/src/lib/kdm.cc
@@ -0,0 +1,49 @@
+#include "util.h"
+#include "recipient_with_kdm.h"
+#include <dcp/name_format.h>
+#include <boost/foreach.hpp>
+#include <boost/function.hpp>
+#include <boost/filesystem.hpp>
+#include <iostream>
+
+using std::list;
+using std::cout;
+using boost::shared_ptr;
+
+int
+write_kdm_files (
+ list<shared_ptr<RecipientWithKDM> > kdms,
+ boost::filesystem::path directory,
+ dcp::NameFormat name_format,
+ dcp::NameFormat::Map name_values,
+ boost::function<bool (boost::filesystem::path)> confirm_overwrite
+ )
+{
+ int written = 0;
+
+ if (directory == "-") {
+ /* Write KDMs to the stdout */
+ BOOST_FOREACH (shared_ptr<RecipientWithKDM> i, kdms) {
+ cout << i->kdm_as_xml ();
+ ++written;
+ }
+
+ return written;
+ }
+
+ if (!boost::filesystem::exists (directory)) {
+ boost::filesystem::create_directories (directory);
+ }
+
+ /* Write KDMs to the specified directory */
+ BOOST_FOREACH (shared_ptr<RecipientWithKDM> i, kdms) {
+ i->add_name_values (name_values);
+ boost::filesystem::path out = directory / careful_string_filter(name_format.get(name_values, ".xml"));
+ if (!boost::filesystem::exists(out) || confirm_overwrite(out)) {
+ i->kdm_as_xml_to_file (out);
+ ++written;
+ }
+ }
+
+ return written;
+}