aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sdp
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2017-11-27 20:35:14 -0500
committerRalph Amissah <ralph@amissah.com>2019-04-10 15:14:14 -0400
commit6dc69228f20b3566320b52966b3782d633171e71 (patch)
tree893201ffbd3bbd6c1ccb595be2af8354593cb49a /src/sdp
parent0.20.1 struct for opt_actions (diff)
0.20.2 paths, config & manifest files
Diffstat (limited to 'src/sdp')
-rw-r--r--src/sdp/meta/read_config_files.d27
-rw-r--r--src/sdp/meta/read_source_files.d1
-rw-r--r--src/sdp/meta/rgx.d10
-rw-r--r--src/sdp/output/package.d1
-rw-r--r--src/sdp/output/paths_output.d282
-rw-r--r--src/sdp/output/paths_source.d353
-rw-r--r--src/sdp/output/rgx.d10
-rwxr-xr-xsrc/sdp/sdp.d18
8 files changed, 375 insertions, 327 deletions
diff --git a/src/sdp/meta/read_config_files.d b/src/sdp/meta/read_config_files.d
index 012ccb6..369d9c2 100644
--- a/src/sdp/meta/read_config_files.d
+++ b/src/sdp/meta/read_config_files.d
@@ -7,32 +7,11 @@ module sdp.meta.read_config_files;
static template configIn() {
import
sdp.meta,
+ sdp.output.paths_source,
std.file,
std.path;
final string configIn(C,E)(C conf_sdl, E env) {
- /+ FIX clean up conf paths ↓ +/
- string sisudoc_conf_pwd = chainPath(to!string(env["pwd"]), "sisudoc/conf").array;
- string sisudoc_conf_pwd_a = chainPath(to!string(env["pwd"]), "conf").array;
- string sisudoc_conf_pwd_b = chainPath(to!string(env["pwd"]), "../conf").array;
- string sisudoc_conf_pwd_c = chainPath(to!string(env["pwd"]), "../../conf").array;
- string sisudoc_conf_pwd_d = chainPath(to!string(env["pwd"]), "../../../conf").array;
- /+ FIX clean up conf paths ↑
- (compare pwd to doc path location, and build config path)
- +/
- string dot_pwd = chainPath(to!string(env["pwd"]), ".sisu").array;
- string underscore_pwd = chainPath(to!string(env["pwd"]), "_sisu").array;
- string dot_home = chainPath(to!string(env["home"]), ".sisu").array;
- string[] possible_config_path_locations = [
- sisudoc_conf_pwd,
- sisudoc_conf_pwd_a,
- sisudoc_conf_pwd_b,
- sisudoc_conf_pwd_c,
- sisudoc_conf_pwd_d,
- dot_pwd,
- underscore_pwd,
- dot_home,
- "/etc/sisu"
- ];
+ auto possible_config_path_locations = ConfigFilePaths!()(env).possible_config_path_locations;
string config_file_str;
foreach(pth; possible_config_path_locations) {
auto conf_file = format(
@@ -67,6 +46,7 @@ static template ConfigSDLang() {
import sdlang;
import
sdp.meta,
+ sdp.output.paths_source,
std.file,
std.path;
auto ConfigSDLang(string configuration, string conf_sdl_filename) {
@@ -86,6 +66,7 @@ static template ConfigSDLang() {
static template configRead() {
import
sdp.meta,
+ sdp.output.paths_source,
std.file,
std.path;
diff --git a/src/sdp/meta/read_source_files.d b/src/sdp/meta/read_source_files.d
index 0443ded..ccda78c 100644
--- a/src/sdp/meta/read_source_files.d
+++ b/src/sdp/meta/read_source_files.d
@@ -9,6 +9,7 @@ static template SiSUrawMarkupContent() {
sdp.meta.rgx;
import
sdp.meta,
+ sdp.output.paths_source,
std.file,
std.path;
mixin SiSUrgxInit;
diff --git a/src/sdp/meta/rgx.d b/src/sdp/meta/rgx.d
index bf1b175..70f48bb 100644
--- a/src/sdp/meta/rgx.d
+++ b/src/sdp/meta/rgx.d
@@ -196,13 +196,13 @@ static template SiSUrgxInit() {
static nbsp_chars_line_start = ctRegex!(`^░+`, "mg");
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
- static src_pth = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
- static src_pth_contents = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
- static src_pth_zip = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
+ static src_pth = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
+ static src_pth_contents = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
+ static src_pth_zip = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
static src_pth_unzip_pod = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
- static src_pth_types = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
+ static src_pth_types = ctRegex!(`^(?P<path>[/]?[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
static src_fn =
- ctRegex!(`^([a-zA-Z0-9._-]+/)*(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
+ ctRegex!(`^([/]?(?:[a-zA-Z0-9._-]+/)*)(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
static src_fn_master = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`);
static src_fn_text = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]sst)$`);
static src_fn_insert = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssi)$`);
diff --git a/src/sdp/output/package.d b/src/sdp/output/package.d
index 58a6ae8..84bdfce 100644
--- a/src/sdp/output/package.d
+++ b/src/sdp/output/package.d
@@ -15,6 +15,7 @@ public import
// std.uni,
std.utf;
public import
+ sdp.output.paths_source,
sdp.output.defaults,
sdp.output.paths_output,
sdp.output.rgx;
diff --git a/src/sdp/output/paths_output.d b/src/sdp/output/paths_output.d
index a5ea0d9..accfcaf 100644
--- a/src/sdp/output/paths_output.d
+++ b/src/sdp/output/paths_output.d
@@ -7,288 +7,6 @@ import std.array,
std.regex,
std.stdio;
import sdp.meta.rgx;
-template SiSUpathsSisupod() {
- mixin SiSUrgxInit;
- static auto rgx = Rgx();
- string _base_dir_pod = "sisupod";
- string _base_dir_doc = "sisudoc";
- string _suffix = ".zip";
- auto SiSUpathsSisupod()() {
- struct _PathsStruct {
- string base_filename(string fn_src) {
- auto pth = fn_src.baseName.stripExtension;
- return pth;
- }
- string sisupod_dir() {
- auto pth = _base_dir_pod;
- return pth;
- }
- string sisudoc_dir() {
- auto pth = _base_dir_doc;
- return pth;
- }
- string sisupod_filename(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename(fn_src) ~ _suffix).array;
- return pth;
- }
- string base_filesystem(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array;
- assert(pth == _base_dir_pod ~ "/" ~ base_filename(fn_src),
- pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename(fn_src) ~ "?");
- return pth;
- }
- string base_pod(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array; // change this
- return pth;
- }
- }
- return _PathsStruct();
- }
-}
-
-template SiSUpathsSisupods() {
- mixin SiSUrgxInit;
- static auto rgx = Rgx();
- string _base_dir_pod = "sisupod";
- string _base_dir_doc = "sisudoc";
- string _suffix = ".zip";
- auto SiSUpathsSisupods(Ps,Lng)(
- Ps src_pth_info,
- Lng lng,
- ) {
- struct _PodPaths {
- string base_filename_(string fn_src) {
- auto pth = fn_src.baseName.stripExtension;
- return pth;
- }
- string sisupod_dir_() {
- auto pth = _base_dir_pod;
- return pth;
- }
- string sisudoc_dir_() {
- auto pth = _base_dir_doc;
- return pth;
- }
- string sisupod_filename_(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename_(fn_src) ~ _suffix).array;
- return pth;
- }
- string base_filesystem_(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array;
- assert(pth == _base_dir_pod ~ "/" ~ base_filename_(fn_src),
- pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename_(fn_src) ~ "?");
- return pth;
- }
- string base_pod_(string fn_src) {
- string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array; // change this
- return pth;
- }
- auto base_filename(string fn_src) {
- auto pth_1_ = base_filename_(fn_src);
- auto pth_2_ = base_filename_(fn_src);
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- return pth_2_;
- }
- }
- return _pods();
- }
- auto sisupod_filename(string fn_src) {
- auto pth_1_ = sisupod_filename_(fn_src);
- auto pth_2_ = sisupod_filename_(fn_src);
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- return pth_2_;
- }
- }
- return _pods();
- }
- auto base(string fn_src) {
- auto pth_1_ = "";
- auto pth_2_ = base_filesystem_(fn_src);
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- return pth_2_;
- }
- }
- return _pods();
- }
- auto pod_root(string fn_src) {
- auto pth_1_ = "";
- auto pth_2_ = base(fn_src).filesystem_open_zpod.chainPath("").array; // "sisudoc"
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- return pth_2_;
- }
- }
- return _pods();
- }
- auto conf_root(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = "conf";
- auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("conf").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto css(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = conf_root(fn_src).zpod.chainPath("css").array;
- auto pth_2_ = conf_root(fn_src).filesystem_open_zpod.chainPath("css").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto media_root(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = "media";
- auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("media").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto text_root(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = media_root(fn_src).zpod.chainPath("text").array;
- auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("text").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto doc(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = text_root(fn_src).zpod;
- auto pth_2_ = text_root(fn_src).filesystem_open_zpod;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto doc_lng(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = text_root(fn_src).zpod.chainPath(lng).array;
- auto pth_2_ = text_root(fn_src).filesystem_open_zpod.chainPath(lng).array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto image_root(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = media_root(fn_src).zpod.chainPath("image").array;
- auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("image").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto fn_pod_filelist(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = "sisudoc.txt";
- auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("sisudoc.txt").array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto fn_doc(string fn_src) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_src.baseName).array;
- auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_src.baseName).array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- auto fn_doc_insert(string fn_src, string fn_insert) {
- auto pod_root_ = pod_root(fn_src);
- auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_insert.baseName).array;
- auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_insert.baseName).array;
- struct _pods {
- auto zpod() {
- return pth_1_;
- }
- auto filesystem_open_zpod() {
- assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
- return pth_2_;
- }
- }
- return _pods();
- }
- }
- return _PodPaths();
- }
-}
template SiSUoutPaths() {
auto SiSUoutPaths(Ps,Lng)(
Ps src_pth_info,
diff --git a/src/sdp/output/paths_source.d b/src/sdp/output/paths_source.d
index a242a33..1fd87e5 100644
--- a/src/sdp/output/paths_source.d
+++ b/src/sdp/output/paths_source.d
@@ -5,10 +5,77 @@
+/
module sdp.output.paths_source;
import std.array,
+ std.file,
std.path,
std.regex,
- std.stdio;
+ std.stdio,
+ std.conv : to;
import sdp.meta.rgx;
+template ManifestFile() {
+ mixin SiSUrgxInit;
+ static auto rgx = Rgx();
+ auto ManifestFile(P)(
+ P _pth,
+ ) {
+ struct ManifestFile_ {
+ auto manifest_file() {
+ string _manifest_file = "sisudoc.txt";
+ return _manifest_file;
+ }
+ auto manifest_file_and_path() {
+ string _manifest_file_and_path;
+ if (isValidPath(_pth) && _pth.isDir
+ && ((_pth.chainPath(manifest_file).array).isFile)) {
+ _manifest_file_and_path = _pth.chainPath(manifest_file).array;
+ } else if (_pth.match(rgx.src_pth_contents)
+ && (_pth.isFile)) {
+ _manifest_file_and_path = _pth;
+ } else {
+ // _manifest_file_and_path = "";
+ }
+ return _manifest_file_and_path;
+ }
+ }
+ return ManifestFile_();
+ }
+}
+template ConfigFilePaths() {
+ mixin SiSUrgxInit;
+ static auto rgx = Rgx();
+ auto ConfigFilePaths(E)(
+ E _env,
+ ) {
+ struct ConfFilePaths {
+ auto possible_config_path_locations() {
+ /+ FIX clean up conf paths ↓ +/
+ string _sisudoc_conf_pwd = chainPath(to!string(_env["pwd"]), "sisudoc/conf").array;
+ string _sisudoc_conf_pwd_a = chainPath(to!string(_env["pwd"]), "conf").array;
+ string _sisudoc_conf_pwd_b = chainPath(to!string(_env["pwd"]), "../conf").array;
+ string _sisudoc_conf_pwd_c = chainPath(to!string(_env["pwd"]), "../../conf").array;
+ string _sisudoc_conf_pwd_d = chainPath(to!string(_env["pwd"]), "../../../conf").array;
+ /+ FIX clean up conf paths ↑
+ (compare pwd to doc path location, and build config path)
+ +/
+ string _dot_pwd = chainPath(to!string(_env["pwd"]), ".sisu").array;
+ string _underscore_pwd = chainPath(to!string(_env["pwd"]), "_sisu").array;
+ string _dot_home = chainPath(to!string(_env["home"]), ".sisu").array;
+ string[] _possible_config_path_locations = [
+ _sisudoc_conf_pwd,
+ _sisudoc_conf_pwd_a,
+ _sisudoc_conf_pwd_b,
+ _sisudoc_conf_pwd_c,
+ _sisudoc_conf_pwd_d,
+ _dot_pwd,
+ _underscore_pwd,
+ _dot_home,
+ "/etc/sisu"
+ ];
+ return _possible_config_path_locations;
+ }
+ }
+ return ConfFilePaths();
+ }
+}
template SiSUpathsSRC() {
mixin SiSUrgxInit;
static auto rgx = Rgx();
@@ -25,7 +92,7 @@ template SiSUpathsSRC() {
string _k;
if (auto m = _fn_src_and_relative_path.match(rgx.language_code_and_filename)) {
_k = m.captures[1];
- } else {
+ } else { /+ unknown until doc_meta read, (could provide & use command line info?) +/
_k = "xx"; // original default was "en" but is not known
}
return _k;
@@ -58,3 +125,285 @@ template SiSUpathsSRC() {
return SisuSrcPaths();
}
}
+template SiSUpathsSisupod() {
+ mixin SiSUrgxInit;
+ static auto rgx = Rgx();
+ string _base_dir_pod = "sisupod";
+ string _base_dir_doc = "sisudoc";
+ string _suffix = ".zip";
+ auto SiSUpathsSisupod()() {
+ struct _PathsStruct {
+ string base_filename(string fn_src) {
+ auto pth = fn_src.baseName.stripExtension;
+ return pth;
+ }
+ string sisupod_dir() {
+ auto pth = _base_dir_pod;
+ return pth;
+ }
+ string sisudoc_dir() {
+ auto pth = _base_dir_doc;
+ return pth;
+ }
+ string sisupod_filename(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src) ~ _suffix).array;
+ return pth;
+ }
+ string base_filesystem(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array;
+ assert(pth == _base_dir_pod ~ "/" ~ base_filename(fn_src),
+ pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename(fn_src) ~ "?");
+ return pth;
+ }
+ string base_pod(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename(fn_src)).array; // change this
+ return pth;
+ }
+ }
+ return _PathsStruct();
+ }
+}
+
+template SiSUpathsSisupods() {
+ mixin SiSUrgxInit;
+ static auto rgx = Rgx();
+ string _base_dir_pod = "sisupod";
+ string _base_dir_doc = "sisudoc";
+ string _suffix = ".zip";
+ auto SiSUpathsSisupods(Ps,Lng)(
+ Ps src_pth_info,
+ Lng lng,
+ ) {
+ struct _PodPaths {
+ string base_filename_(string fn_src) {
+ auto pth = fn_src.baseName.stripExtension;
+ return pth;
+ }
+ string sisupod_dir_() {
+ auto pth = _base_dir_pod;
+ return pth;
+ }
+ string sisudoc_dir_() {
+ auto pth = _base_dir_doc;
+ return pth;
+ }
+ string sisupod_filename_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src) ~ _suffix).array;
+ return pth;
+ }
+ string base_filesystem_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array;
+ assert(pth == _base_dir_pod ~ "/" ~ base_filename_(fn_src),
+ pth ~ " == " ~ _base_dir_pod ~ "/" ~ base_filename_(fn_src) ~ "?");
+ return pth;
+ }
+ string base_pod_(string fn_src) {
+ string pth = _base_dir_pod.chainPath(base_filename_(fn_src)).array; // change this
+ return pth;
+ }
+ auto base_filename(string fn_src) {
+ auto pth_1_ = base_filename_(fn_src);
+ auto pth_2_ = base_filename_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto sisupod_filename(string fn_src) {
+ auto pth_1_ = sisupod_filename_(fn_src);
+ auto pth_2_ = sisupod_filename_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto base(string fn_src) {
+ auto pth_1_ = "";
+ auto pth_2_ = base_filesystem_(fn_src);
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto pod_root(string fn_src) {
+ auto pth_1_ = "";
+ auto pth_2_ = base(fn_src).filesystem_open_zpod.chainPath("").array; // "sisudoc"
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto conf_root(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "conf";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("conf").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto css(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = conf_root(fn_src).zpod.chainPath("css").array;
+ auto pth_2_ = conf_root(fn_src).filesystem_open_zpod.chainPath("css").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto media_root(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "media";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("media").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto text_root(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = media_root(fn_src).zpod.chainPath("text").array;
+ auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("text").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto doc(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = text_root(fn_src).zpod;
+ auto pth_2_ = text_root(fn_src).filesystem_open_zpod;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto doc_lng(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = text_root(fn_src).zpod.chainPath(lng).array;
+ auto pth_2_ = text_root(fn_src).filesystem_open_zpod.chainPath(lng).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto image_root(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = media_root(fn_src).zpod.chainPath("image").array;
+ auto pth_2_ = media_root(fn_src).filesystem_open_zpod.chainPath("image").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto fn_pod_filelist(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = "sisudoc.txt";
+ auto pth_2_ = pod_root(fn_src).filesystem_open_zpod.chainPath("sisudoc.txt").array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto fn_doc(string fn_src) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_src.baseName).array;
+ auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_src.baseName).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ auto fn_doc_insert(string fn_src, string fn_insert) {
+ auto pod_root_ = pod_root(fn_src);
+ auto pth_1_ = doc_lng(fn_src).zpod.chainPath(fn_insert.baseName).array;
+ auto pth_2_ = doc_lng(fn_src).filesystem_open_zpod.chainPath(fn_insert.baseName).array;
+ struct _pods {
+ auto zpod() {
+ return pth_1_;
+ }
+ auto filesystem_open_zpod() {
+ assert(pod_root_.filesystem_open_zpod.chainPath(zpod).array == pth_2_);
+ return pth_2_;
+ }
+ }
+ return _pods();
+ }
+ }
+ return _PodPaths();
+ }
+}
diff --git a/src/sdp/output/rgx.d b/src/sdp/output/rgx.d
index dbd1528..c9f0175 100644
--- a/src/sdp/output/rgx.d
+++ b/src/sdp/output/rgx.d
@@ -15,13 +15,13 @@ static template SiSUoutputRgxInit() {
static nbsp_chars_line_start = ctRegex!(`^░+`, "mg");
static nbsp_and_space = ctRegex!(`&nbsp;[ ]`, "mg");
static nbsp_char_and_space = ctRegex!(`░[ ]`, "mg");
- static src_pth = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
- static src_pth_contents = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
- static src_pth_zip = ctRegex!(`^(?P<path>(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
+ static src_pth = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])$`);
+ static src_pth_contents = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+)/sisudoc[.]txt$`);
+ static src_pth_zip = ctRegex!(`^(?P<path>[/]?(?:[a-zA-Z0-9._-]+/)*)(?P<filename>[a-zA-Z0-9._-]+[.]zip)$`);
static src_pth_unzip_pod = ctRegex!(`^(?P<path>media/text/[a-z]{2}/)*(?P<filename>[a-zA-Z0-9._-]+[.]ss[im])$`);
- static src_pth_types = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
+ static src_pth_types = ctRegex!(`^(?P<path>[/]?[a-zA-Z0-9._-]+/)*(?P<gotfile>(?P<filename>[a-zA-Z0-9._-]+[.]ss[tm])|(?P<filelist>[a-zA-Z0-9._-]+/sisudoc[.]txt)|(?P<filezip>[a-zA-Z0-9._-]+[.]zip))$`);
static src_fn =
- ctRegex!(`^([a-zA-Z0-9._-]+/)*(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
+ ctRegex!(`^([/]?(?:[a-zA-Z0-9._-]+/)*)(?P<fn_src>(?P<fn_base>[a-zA-Z0-9._-]+)[.](?P<fn_src_suffix>ss[tm]))$`);
static src_fn_master = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssm)$`);
static src_fn_text = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]sst)$`);
static src_fn_insert = ctRegex!(`^(?P<path>[a-zA-Z0-9._-]+/)*(?P<filename>[a-zA-Z0-9._-]+[.]ssi)$`);
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d
index ac022ba..a9f63e2 100755
--- a/src/sdp/sdp.d
+++ b/src/sdp/sdp.d
@@ -300,21 +300,19 @@ void main(string[] args) {
}
auto _opt_action = OptActions();
foreach(arg; args[1..$]) {
+ auto _manifest = ManifestFile!()(arg);
if (arg.match(rgx.flag_action)) {
flag_action ~= " " ~ arg; // flags not taken by getopt
} else if (arg.match(rgx.src_pth)) {
fns_src ~= arg; // gather input markup source file names for processing
- } else if (arg.match(rgx.src_pth_contents)
- || ((arg.isDir) && ((arg.chainPath("sisudoc.txt").array).isFile))
- ) {
+ } else if (_manifest.manifest_file_and_path) {
string contents_location_;
- string sisudoc_txt_;
- if ((arg.chainPath("sisudoc.txt").array).isFile) {
- sisudoc_txt_ = arg.chainPath("sisudoc.txt").array;
- } else if (arg.match(rgx.src_pth_contents)) {
- sisudoc_txt_ = arg;
- } else {
- }
+ string sisudoc_txt_ = _manifest.manifest_file_and_path;
+ enforce(
+ exists(sisudoc_txt_)!=0,
+ "file not found: «" ~
+ sisudoc_txt_ ~ "»"
+ );
try {
if (exists(sisudoc_txt_)) {
contents_location_ = sisudoc_txt_.readText;