aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp/output
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdp/output')
-rw-r--r--src/sdp/output/paths_output.d14
-rw-r--r--src/sdp/output/source_sisupod.d24
2 files changed, 26 insertions, 12 deletions
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);