From 0f37cbf6a34eb57aa1b5ca09d1cbe3f607997b88 Mon Sep 17 00:00:00 2001 From: Ralph Amissah Date: Fri, 29 Sep 2017 19:29:11 -0400 Subject: sisupod.zip related fixes --- src/sdp/output/paths_output.d | 14 ++++++++++---- src/sdp/output/source_sisupod.d | 24 ++++++++++++++++-------- 2 files changed, 26 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d index 5902b6b..ae4d4ac 100644 --- a/src/sdp/output/paths_output.d +++ b/src/sdp/output/paths_output.d @@ -10,18 +10,21 @@ import sdp.meta.rgx; template SiSUpathsSisupod() { mixin SiSUrgxInit; static auto rgx = Rgx(); - string base_dir = "sisupod"; - string suffix = ".zip"; + string _base_dir = "sisupod"; + string _suffix = ".zip"; auto SiSUpathsSisupod()() { struct _PathsStruct { string base_filename(string fn_src) { return fn_src.baseName.stripExtension; } + string sisupod_dir() { + return _base_dir; + } string sisupod_filename(string fn_src) { - return base_dir.chainPath(base_filename(fn_src) ~ suffix).array; + return _base_dir.chainPath(base_filename(fn_src) ~ _suffix).array; } string base(string fn_src) { - return base_dir.chainPath(base_filename(fn_src)).array; + return _base_dir.chainPath(base_filename(fn_src)).array; } } return _PathsStruct(); @@ -36,6 +39,9 @@ template SiSUpathsSisupodZipped() { ) { struct _PathsStruct { auto spod_pths = SiSUpathsSisupod!()(); + string sisupod_dir() { + return spod_pths.sisupod_dir; + } string base_filename(string fn_src) { return spod_pths.base_filename(fn_src); } diff --git a/src/sdp/output/source_sisupod.d b/src/sdp/output/source_sisupod.d index db19f68..9c83905 100644 --- a/src/sdp/output/source_sisupod.d +++ b/src/sdp/output/source_sisupod.d @@ -27,6 +27,10 @@ template SiSUpod() { assert (doc_matters.source_filename.match(rgx.src_fn)); try { /+ create directory structure +/ + if (!exists(pth_sisupod.sisupod_dir)) { + // used both by sisupod zipped (& sisupod filesystem (unzipped) which makes its own recursive dirs) + pth_sisupod.sisupod_dir.mkdirRecurse; + } if (doc_matters.opt_action["source"]) { if (!exists(pth_sisupod_filesystem.text_root(doc_matters.source_filename))) { pth_sisupod_filesystem.text_root(doc_matters.source_filename).mkdirRecurse; @@ -50,9 +54,8 @@ template SiSUpod() { debug(sisupod) { writeln(__LINE__, ": ", doc_matters.source_filename, " -> ", - pth_sisupod_filesystem.fn_doc( - doc_matters.source_filename, - )); + pth_sisupod_filesystem.fn_doc(doc_matters.source_filename) + ); } auto zip = new ZipArchive(); auto fn_sisupod = pth_sisupod.sisupod_filename(doc_matters.source_filename); @@ -78,7 +81,6 @@ template SiSUpod() { zip_data.write(cast(char[]) ((fn_src).read)); zip_arc_member_file.expandedData = zip_data.toBytes(); zip.addMember(zip_arc_member_file); - createZipFile!()(pth_sisupod.sisupod_filename(fn_src), zip.build()); } } } @@ -98,7 +100,6 @@ template SiSUpod() { zip_data.write((fn_src).readText); zip_arc_member_file.expandedData = zip_data.toBytes(); zip.addMember(zip_arc_member_file); - createZipFile!()(pth_sisupod.sisupod_filename(fn_src), zip.build()); } } } @@ -117,7 +118,6 @@ template SiSUpod() { zip_data.write((fn_src).readText); zip_arc_member_file.expandedData = zip_data.toBytes(); zip.addMember(zip_arc_member_file); - createZipFile!()(pth_sisupod.sisupod_filename(fn_src), zip.build()); } } } @@ -147,17 +147,25 @@ template SiSUpod() { } if (doc_matters.opt_action["sisupod"]) { auto zip_arc_member_file = new ArchiveMember(); - zip_arc_member_file.name = insert_file; + zip_arc_member_file.name = fn_out; auto zip_data = new OutBuffer(); zip_data.write((fn_src).readText); zip_arc_member_file.expandedData = zip_data.toBytes(); zip.addMember(zip_arc_member_file); - createZipFile!()(pth_sisupod.sisupod_filename(fn_src), zip.build()); + createZipFile!()(fn_sisupod, zip.build()); } } } } } + { + auto fn_src = doc_matters.source_filename; + if (exists(fn_src)) { + if (doc_matters.opt_action["sisupod"]) { + createZipFile!()(fn_sisupod, zip.build()); + } + } + } if (exists(fn_sisupod)) { try { auto data = (cast(byte[]) (fn_sisupod).read); -- cgit v1.2.3