From d9c7b39b884511b38ca339d032f4688b86472af1 Mon Sep 17 00:00:00 2001
From: ken restivo <ken@restivo.org>
Date: Tue, 3 Nov 2015 21:15:49 -0800
Subject: Commit the tool used to generate the hooks docs.

---
 .../src/generate_hooks_index/core.clj              | 82 ++++++++++++++++++++++
 1 file changed, 82 insertions(+)
 create mode 100644 util/generate-hooks-index/src/generate_hooks_index/core.clj

(limited to 'util/generate-hooks-index/src/generate_hooks_index')

diff --git a/util/generate-hooks-index/src/generate_hooks_index/core.clj b/util/generate-hooks-index/src/generate_hooks_index/core.clj
new file mode 100644
index 000000000..ac9e72f90
--- /dev/null
+++ b/util/generate-hooks-index/src/generate_hooks_index/core.clj
@@ -0,0 +1,82 @@
+(ns generate-hooks-index.core
+  (:require [clojure.string :as str]
+            [hiccup.core :as h]
+            [taoensso.timbre :as log]
+            [clojure.java.shell :as sh])
+  (:gen-class))
+
+(log/set-level! :info)
+
+(defn clean-fn-arg
+  [s]
+  (-> s
+      (str/replace #"'" "")
+      (str/replace #"\"" "")
+      str/trim))
+
+(defn check-fn-args
+  [xs]
+  (when (-> xs first empty?)
+    (throw (Exception. "empty function")))
+  (map clean-fn-arg xs))
+
+
+(defn get-fn-arg
+  [s]
+  (->> s
+       (re-matches #".*call_hooks\((.+)\,(.*)\).*")
+       rest
+       check-fn-args))
+
+
+
+(defn fix-path
+  [path file]
+  (str/replace file path ""))
+
+
+(defn show-hooks
+  [path]
+  (for [s (-> (sh/sh "rgrep" "call_hooks" path)
+              :out
+              str/split-lines)
+        :let [[file hook]   (str/split s #"\t*:")]]
+    (try
+      (-> (zipmap [:function :arg] (get-fn-arg hook))
+          (assoc  :file (fix-path path file)))
+      (catch Exception e
+        (log/debug e s file hook)))))
+
+
+
+(defn hiccupy
+  [path]
+  [:div
+   [:h3 "Hooks"]
+   [:p "Generated " (-> (java.util.Date.) str)]
+   [:table
+    [:tr (map #(vector :td %) ["Function" "Source File" "Arg"])]
+    (for [{:keys [function arg file]} 
+          (->> path
+               show-hooks
+               (sort-by :function))]
+      [:tr  (map #(vector :td (h/h %)) [function file arg])])]])
+
+
+(defn make-hook-docs
+  [path-to-hubzillla]
+  (->> path-to-hubzillla
+       hiccupy
+       h/html
+       (spit (str path-to-hubzillla "doc/hooks.html"))))
+
+
+(defn -main
+  [& args]
+  (log/info "Starting..")
+  (make-hook-docs (str (System/getProperty "user.dir") "/../../"))
+  (log/info "Done!")
+  (System/exit 0))
+
+
+
-- 
cgit v1.2.3


From 4bd0e083d16d622c9ed36c810a7fd729830dcdd6 Mon Sep 17 00:00:00 2001
From: ken restivo <ken@restivo.org>
Date: Tue, 3 Nov 2015 21:19:16 -0800
Subject: Put generated date at end of data.

---
 util/generate-hooks-index/src/generate_hooks_index/core.clj | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'util/generate-hooks-index/src/generate_hooks_index')

diff --git a/util/generate-hooks-index/src/generate_hooks_index/core.clj b/util/generate-hooks-index/src/generate_hooks_index/core.clj
index ac9e72f90..2112647b0 100644
--- a/util/generate-hooks-index/src/generate_hooks_index/core.clj
+++ b/util/generate-hooks-index/src/generate_hooks_index/core.clj
@@ -53,14 +53,14 @@
   [path]
   [:div
    [:h3 "Hooks"]
-   [:p "Generated " (-> (java.util.Date.) str)]
    [:table
     [:tr (map #(vector :td %) ["Function" "Source File" "Arg"])]
     (for [{:keys [function arg file]} 
           (->> path
                show-hooks
                (sort-by :function))]
-      [:tr  (map #(vector :td (h/h %)) [function file arg])])]])
+      [:tr  (map #(vector :td (h/h %)) [function file arg])])]
+   [:p "Generated " (-> (java.util.Date.) str)]])
 
 
 (defn make-hook-docs
-- 
cgit v1.2.3