From dcbc43ba94c484c7b5741bc9efc88b51e9b04e31 Mon Sep 17 00:00:00 2001
From: Ralph Amissah <ralph.amissah@gmail.com>
Date: Tue, 1 Jan 2019 13:28:27 -0500
Subject: doc generator info related

---
 src/doc_reform/doc_reform.d   | 20 ++++++++++++++++++--
 src/doc_reform/meta/metadoc.d | 39 ++++++++++++++++++++++++++++++++++++++-
 2 files changed, 56 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/doc_reform/doc_reform.d b/src/doc_reform/doc_reform.d
index f1d8d18..53ddbcf 100755
--- a/src/doc_reform/doc_reform.d
+++ b/src/doc_reform/doc_reform.d
@@ -4,6 +4,7 @@ import
   doc_reform.conf.compile_time_info,
   doc_reform.meta.metadoc;
 import
+  std.datetime,
   std.getopt,
   std.file,
   std.path,
@@ -396,6 +397,21 @@ void main(string[] args) {
     }
   }
   auto _opt_action = OptActions();
+  auto program_info() {
+    struct ProgramInfo {
+      string name() {
+        return program_name;
+      }
+      auto ver() {
+        string ver_ = format(
+          "%s.%s.%s",
+          _ver.major, _ver.minor, _ver.patch,
+        );
+        return ver_;
+      }
+    }
+    return ProgramInfo();
+  }
   auto _env = [
     "pwd" :     environment["PWD"],
     "home" :    environment["HOME"],
@@ -518,7 +534,7 @@ void main(string[] args) {
           ) {
             writeln("--->\nstepX commence → (document abstraction)");
           }
-          auto t = DocReformAbstraction!()(_env, _opt_action, manifest);
+          auto t = DocReformAbstraction!()(_env, program_info, _opt_action, manifest);
           static assert(!isTypeTuple!(t));
           static assert(t.length==2);
           auto doc_abstraction = t[dAM.abstraction];
@@ -598,7 +614,7 @@ void main(string[] args) {
           ) {
             writeln("--->\nstepX commence → (document abstraction)");
           }
-          auto t = DocReformAbstraction!()(_env, _opt_action, manifest);
+          auto t = DocReformAbstraction!()(_env, program_info, _opt_action, manifest);
           static assert(!isTypeTuple!(t));
           static assert(t.length==2);
           auto doc_abstraction = t[dAM.abstraction];
diff --git a/src/doc_reform/meta/metadoc.d b/src/doc_reform/meta/metadoc.d
index 4cb218e..a57159d 100644
--- a/src/doc_reform/meta/metadoc.d
+++ b/src/doc_reform/meta/metadoc.d
@@ -1,6 +1,7 @@
 module doc_reform.meta.metadoc;
 template DocReformAbstraction() {
   import
+    std.datetime,
     std.getopt,
     std.file,
     std.path,
@@ -28,8 +29,9 @@ template DocReformAbstraction() {
   enum makeMeta { make, meta }
   enum docAbst  { doc_abstraction, section_keys, segnames, segnames_0_4, tag_assoc, images }
   static auto rgx = Rgx();
-  auto DocReformAbstraction(E,O,M)(
+  auto DocReformAbstraction(E,P,O,M)(
     E _env,
+    P program_info,
     O _opt_action,
     M _manifest
   ){
@@ -112,6 +114,41 @@ template DocReformAbstraction() {
       writeln("step4 commence → (doc_matters)");
     }
     struct DocumentMatters {
+      auto generator_program() {
+        struct Prog_ {
+          auto name() {
+            return program_info.name;
+          }
+          auto ver() {
+            return program_info.ver;
+          }
+          auto name_and_version() {
+            return format(
+              "%s-%s",
+              program_info.name,
+              program_info.ver,
+            );
+          }
+          auto url_home() {
+            return "http://sisudoc.org";
+          }
+          auto url_git() {
+            return "https://git.sisudoc.org/software/sisu";
+          }
+        }
+        return Prog_();
+      }
+      auto generated_time() {
+        auto _st = Clock.currTime(UTC());
+        auto _time = _st.year.to!string
+          ~ "-" ~ _st.month.to!int.to!string // prefer as month number
+          ~ "-" ~ _st.day.to!string
+          ~ " [" ~ _st.isoWeek.to!string ~ "/" ~ _st.dayOfWeek.to!int.to!string ~ "]"
+          ~ " " ~ _st.hour.to!string
+          ~ ":" ~ _st.minute.to!string
+          ~ ":" ~ _st.second.to!string;
+        return _time;
+      }
       auto conf_make_meta() { // TODO meld with all make instructions
         return _make_and_meta_struct;
       }
-- 
cgit v1.2.3