From 94d9d6127eaef743ece31bdef052d59def4fedd9 Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Mon, 15 Jan 2024 23:03:50 +0100 Subject: [PATCH] Create an init command --- .gitignore | 2 ++ deps.edn | 10 ++++++++++ statyk | 35 +++++++++++++++++++++++++---------- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 .gitignore create mode 100644 deps.edn diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ad6d464 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.local/ +.cpcache/ diff --git a/deps.edn b/deps.edn new file mode 100644 index 0000000..b7c6dc1 --- /dev/null +++ b/deps.edn @@ -0,0 +1,10 @@ +{:deps {org.clojure/tools.cli {:mvn/version "1.0.214"} + ring/ring-core {:mvn/version "1.11.0"} + ring/ring-jetty-adapter {:mvn/version "1.11.0"} + babashka/fs {:mvn/version "0.5.20"} + ;; logs for jetty + org.slf4j/slf4j-api {:mvn/version "2.0.9"} + ch.qos.logback/logback-classic {:mvn/version "1.4.11"} + net.logstash.logback/logstash-logback-encoder {:mvn/version "7.4"} + ch.codesmith/logger {:mvn/version "0.7.108"} + }} diff --git a/statyk b/statyk index 6800a2c..3f1bfbb 100755 --- a/statyk +++ b/statyk @@ -10,6 +10,11 @@ ring/ring-core {:mvn/version "1.11.0"} ring/ring-jetty-adapter {:mvn/version "1.11.0"} babashka/fs {:mvn/version "0.5.20"} + ;; logs for jetty + org.slf4j/slf4j-api {:mvn/version "2.0.9"} + ch.qos.logback/logback-classic {:mvn/version "1.4.11"} + net.logstash.logback/logstash-logback-encoder {:mvn/version "7.4"} + ch.codesmith/logger {:mvn/version "0.7.108"} }} ' @@ -40,10 +45,11 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" [ring.adapter.jetty :refer [run-jetty]])) (def config - {:source-directory "_src" - :dest-directory "_site" - :port 13375 - :host "127.0.0.1"}) + {:source-directory "_src" + :dest-directory "_site" + :templates-directory "_templates" + :port 13375 + :host "127.0.0.1"}) (def cli-options []) @@ -76,10 +82,10 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" (defn serve-dest-dir-handler [request] - (let [path (str dest-directory (:uri request))] + (let [path (str (:dest-directory config) (:uri request))] (if-let [content (read-file path)] (let [mime-type (mime/ext-mime-type path)] - (cond-> (resp/ok content) + (cond-> (resp/response content) mime-type (resp/content-type mime-type))) {:status 404 :header {"Content-Type" "text/plain"} @@ -96,7 +102,7 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" (defn replace-extension [f new-extension] - (str (fs/strip-ext f) "." new-extention)) + (str (fs/strip-ext f) "." new-extension)) (defn dst-file-name-and-ext [src-file] @@ -121,6 +127,7 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" ) (defn build-img + [src-file dst-file] ;; TODO jpg => webp ) @@ -136,7 +143,7 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" (defn generate-static-files [] (doseq [src-file (file-seq (:source-directory config))] - (let [{:keys [ext dst-file]} (dst-file-name src-file)] + (let [{:keys [ext dst-file]} (dst-file-name-and-ext src-file)] (when (is-newer? src-file dst-file) (build src-file dst-file ext))))) @@ -150,6 +157,14 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" "- clean delete generated files in _site"])) (System/exit 0)) +(defn init-site + [options] + (mapv (fn [d] + (println (format "Create dir: %s" d)) + (fs/create-dirs d)) [(:source-directory config) + (:dest-directory config) + (:templates-directory config)])) + (defn -main [& args] (let [{:keys [options arguments summary errors] :as parsed} @@ -166,9 +181,9 @@ exec clojure $OPTS -Sdeps "$DEPS" -M "$0" "$@" {:port 13375 :host "127.0.0.1"})) "gen" (generate-static-files) + "init" (init-site options) (show-help) - (err! (format "unknown command %s" command)))) - (pp/pprint parsed))) + (err! (format "unknown command %s" command)))))) (apply -main *command-line-args*)