aboutsummaryrefslogtreecommitdiff
path: root/libbpkg/manifest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbpkg/manifest.cxx')
-rw-r--r--libbpkg/manifest.cxx30
1 files changed, 30 insertions, 0 deletions
diff --git a/libbpkg/manifest.cxx b/libbpkg/manifest.cxx
index 8782409..b94b4da 100644
--- a/libbpkg/manifest.cxx
+++ b/libbpkg/manifest.cxx
@@ -1803,6 +1803,36 @@ namespace bpkg
parse_package_manifest (p, move (nv), iu, fl, *this);
}
+ static const string description_file ("description-file");
+ static const string changes_file ("changes-file");
+
+ void package_manifest::
+ load_files (const function<load_function>& loader)
+ {
+ auto load = [&loader] (const string& n, const path& p)
+ {
+ string r (loader (n, p));
+
+ if (r.empty ())
+ throw parsing ("package " + n + " references empty file");
+
+ return r;
+ };
+
+ // Load the description-file manifest value.
+ //
+ if (description && description->file)
+ description = text_file (load (description_file, description->path));
+
+ // Load the changes-file manifest values.
+ //
+ for (text_file& c: changes)
+ {
+ if (c.file)
+ c = text_file (load (changes_file, c.path));
+ }
+ }
+
static void
serialize_package_manifest (manifest_serializer& s,
const package_manifest& m,