Add basic pipeline plumbing
This commit is contained in:
parent
ef6922ab83
commit
eea6a1e858
|
@ -18,3 +18,4 @@ profiles.clj
|
||||||
resources/posts/
|
resources/posts/
|
||||||
/resources/author/
|
/resources/author/
|
||||||
resources/index/
|
resources/index/
|
||||||
|
.eastwood
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
"Userspace functions you can run by default in your local REPL."
|
"Userspace functions you can run by default in your local REPL."
|
||||||
(:require
|
(:require
|
||||||
[shapey-shifty.config :refer [env]]
|
[shapey-shifty.config :refer [env]]
|
||||||
[clojure.pprint]
|
[clojure.pprint]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[expound.alpha :as expound]
|
[expound.alpha :as expound]
|
||||||
[mount.core :as mount]
|
[mount.core :as mount]
|
||||||
[shapey-shifty.core :refer [start-app]]))
|
[shapey-shifty.core :refer [start-app]]))
|
||||||
|
|
||||||
(alter-var-root #'s/*explain-out* (constantly expound/printer))
|
(alter-var-root #'s/*explain-out* (constantly expound/printer))
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
(def base-path "resources/author")
|
(def base-path "resources/author")
|
||||||
|
|
||||||
(defn create-author []
|
(defn create-author []
|
||||||
{:card nil :password-hash nil})
|
{:card nil :password-hash nil})
|
||||||
|
|
||||||
(defn load-author [author-name]
|
(defn load-author [author-name]
|
||||||
(let [path (format "%s/%s" base-path author-name)
|
(let [path (format "%s/%s" base-path author-name)
|
||||||
file (io/file path)]
|
file (io/file path)]
|
||||||
(when (.exists file)
|
(when (.exists file)
|
||||||
|
@ -16,9 +16,9 @@
|
||||||
edn/read-string))))
|
edn/read-string))))
|
||||||
|
|
||||||
(defn load-all-authors []
|
(defn load-all-authors []
|
||||||
(->> base-path
|
(->> base-path
|
||||||
io/file
|
io/file
|
||||||
file-seq
|
file-seq
|
||||||
(filter #(.isFile %))
|
(filter #(.isFile %))
|
||||||
(map #(->> % slurp edn/read-string))))
|
(map #(->> % slurp edn/read-string))))
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
(ns shapey-shifty.core
|
(ns shapey-shifty.core
|
||||||
(:require
|
(:require
|
||||||
[shapey-shifty.handler :as handler]
|
[shapey-shifty.handler :as handler]
|
||||||
[shapey-shifty.nrepl :as nrepl]
|
[shapey-shifty.nrepl :as nrepl]
|
||||||
[luminus.http-server :as http]
|
[luminus.http-server :as http]
|
||||||
[shapey-shifty.config :refer [env]]
|
[shapey-shifty.config :refer [env]]
|
||||||
[clojure.tools.cli :refer [parse-opts]]
|
[clojure.tools.cli :refer [parse-opts]]
|
||||||
[clojure.tools.logging :as log]
|
[clojure.tools.logging :as log]
|
||||||
[mount.core :as mount])
|
[mount.core :as mount])
|
||||||
(:gen-class))
|
(:gen-class))
|
||||||
|
|
||||||
;; log uncaught exceptions in threads
|
;; log uncaught exceptions in threads
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
(ns shapey-shifty.index.index
|
(ns shapey-shifty.index.index
|
||||||
(:require [clucy.core :as clucy]
|
(:require [clucy.core :as clucy]
|
||||||
[shapey-shifty.posts.posts-io :as post-io]
|
[shapey-shifty.posts.posts-io :as post-io]))
|
||||||
))
|
|
||||||
|
|
||||||
(def index-path (atom "resources/index"))
|
(def index-path (atom "resources/index"))
|
||||||
|
|
||||||
|
@ -13,7 +12,7 @@
|
||||||
(defn crawl-posts!
|
(defn crawl-posts!
|
||||||
([path]
|
([path]
|
||||||
(crawl-posts! path post-io/read-post))
|
(crawl-posts! path post-io/read-post))
|
||||||
([path parsing-fn]
|
([path parsing-fn]
|
||||||
(->> path
|
(->> path
|
||||||
clojure.java.io/file
|
clojure.java.io/file
|
||||||
file-seq
|
file-seq
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
(ns shapey-shifty.pipeline.core)
|
||||||
|
|
||||||
|
(def pipelines (atom {:load-post []
|
||||||
|
:render-post []
|
||||||
|
:write-post []}))
|
||||||
|
|
||||||
|
(defn update-pipeline [k f]
|
||||||
|
(swap! pipelines #(update % k conj f)))
|
||||||
|
|
||||||
|
(defn add-load-post-step [f]
|
||||||
|
(update-pipeline :load-post f))
|
||||||
|
|
||||||
|
(defn add-render-post-step [f]
|
||||||
|
(update-pipeline :render-post f))
|
||||||
|
|
||||||
|
(defn add-write-post-step [f]
|
||||||
|
(update-pipeline :write-post f))
|
||||||
|
|
||||||
|
(defn execute-pipeline [k params]
|
||||||
|
(let [p (k @pipelines)]
|
||||||
|
((apply comp p) params)))
|
||||||
|
|
||||||
|
(defn add-pipeline [k v]
|
||||||
|
(swap! pipelines #(assoc % k v)))
|
|
@ -1,7 +1,7 @@
|
||||||
(ns shapey-shifty.posts.posts-io
|
(ns shapey-shifty.posts.posts-io
|
||||||
(:require
|
(:require
|
||||||
[shapey-shifty.posts.core :as core]
|
[shapey-shifty.posts.core :as core]
|
||||||
[shapey-shifty.authors.author-core :as author]))
|
[shapey-shifty.authors.author-core :as author]))
|
||||||
|
|
||||||
(def post-filename "post.json")
|
(def post-filename "post.json")
|
||||||
(def base-posts-path "resources/posts")
|
(def base-posts-path "resources/posts")
|
||||||
|
|
|
@ -1,21 +1,20 @@
|
||||||
(ns shapey-shifty.routes.home
|
(ns shapey-shifty.routes.home
|
||||||
(:require
|
(:require
|
||||||
[shapey-shifty.layout :as layout]
|
[shapey-shifty.layout :as layout]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[shapey-shifty.middleware :as middleware]
|
[shapey-shifty.middleware :as mid]
|
||||||
[ring.util.response]
|
[ring.util.response]
|
||||||
[shapey-shifty.posts.core :as posts]
|
[shapey-shifty.posts.core :as posts]
|
||||||
[shapey-shifty.posts.posts-io :as post-io]
|
[shapey-shifty.posts.posts-io :as post-io]
|
||||||
[shapey-shifty.routes.post-router :as post-router]
|
[shapey-shifty.routes.post-router :as post-router]
|
||||||
[shapey-shifty.authors.author-core :as author]
|
[shapey-shifty.authors.author-core :as author]
|
||||||
[ring.util.http-response :as response]))
|
[ring.util.http-response :as response]))
|
||||||
|
|
||||||
|
(def middleware (atom [mid/wrap-csrf mid/wrap-formats]))
|
||||||
|
|
||||||
(defn home-page [request]
|
(defn home-page [request]
|
||||||
(layout/render request "home.html" {:docs (-> "docs/docs.md" io/resource slurp)}))
|
(layout/render request "home.html" {:docs (-> "docs/docs.md" io/resource slurp)}))
|
||||||
|
|
||||||
(defn test-view [request]
|
|
||||||
(layout/render request "post.html" {:post (-> (posts/create-empty-post) (posts/set-content "Hey there everyone!") (posts/set-name "Yolo") :properties)}))
|
|
||||||
|
|
||||||
(defn post-view [request]
|
(defn post-view [request]
|
||||||
(let [{:keys [path-params query-params body-params]} request
|
(let [{:keys [path-params query-params body-params]} request
|
||||||
{:keys [year month day n]} path-params
|
{:keys [year month day n]} path-params
|
||||||
|
@ -24,16 +23,13 @@
|
||||||
:card (:author post)})))
|
:card (:author post)})))
|
||||||
|
|
||||||
(defn about-page [request]
|
(defn about-page [request]
|
||||||
(layout/render request "h_card.html"
|
(layout/render request "h_card.html"
|
||||||
{
|
{:card (:card (author/load-author (get-in request [:path-params :name])))}))
|
||||||
:card (:card (author/load-author (get-in request [:path-params :name])))
|
|
||||||
}))
|
|
||||||
|
|
||||||
(defn home-routes []
|
(defn home-routes []
|
||||||
[""
|
[""
|
||||||
{:middleware [middleware/wrap-csrf
|
{:middleware @middleware}
|
||||||
middleware/wrap-formats]}
|
|
||||||
["/" {:get home-page}]
|
["/" {:get home-page}]
|
||||||
["/blog/:year/:month/:day/:n" {:get post-view}]
|
["/about/:name" {:get about-page}]
|
||||||
["/about/:name" {:get about-page}]])
|
["/:year/:month/:day/:n" {:get post-view}]])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue