diff options
Diffstat (limited to 'src/sdp/sdp.d')
-rwxr-xr-x | src/sdp/sdp.d | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/sdp/sdp.d b/src/sdp/sdp.d index c861d1d..375f91f 100755 --- a/src/sdp/sdp.d +++ b/src/sdp/sdp.d @@ -10,6 +10,8 @@ import sdp.meta.metadoc; import std.getopt, + std.file, + std.path, std.process; import sdp.meta, @@ -145,13 +147,20 @@ void main(string[] args) { 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)) { - import std.file, - std.path; + } else if (arg.match(rgx.src_pth_contents) + || ((arg.isDir) && ((arg.chainPath("sisudoc.txt").array).isFile)) + ) { 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 { + } try { - if (exists(arg)) { - contents_location_ = arg.readText; + if (exists(sisudoc_txt_)) { + contents_location_ = sisudoc_txt_.readText; } } catch (ErrnoException ex) { @@ -161,11 +170,11 @@ void main(string[] args) { } auto contents_locations_arr = (cast(char[]) contents_location_).split; - auto tmp_dir_ = (arg).dirName.array; + auto tmp_dir_ = (sisudoc_txt_).dirName.array; foreach (contents_location; contents_locations_arr) { assert(contents_location.match(rgx.src_pth), - "not a recognised file: " ~ - contents_location + "not a recognised file: «" ~ + contents_location ~ "»" ); auto contents_location_pth_ = (contents_location).to!string; fns_src ~= (((tmp_dir_).chainPath(contents_location_pth_)).array).to!(char[]); @@ -206,8 +215,8 @@ void main(string[] args) { } enforce( fn_src.match(rgx.src_pth_types), - "not a sisu markup filename: <<" ~ - fn_src ~ ">>" + "not a sisu markup filename: «" ~ + fn_src ~ "»" ); auto t = SiSUabstraction!()(fn_src, opts, env); static assert(!isTypeTuple!(t)); |