From 663ddfbce2c4f2d5345f61187f91160cacf5ff49 Mon Sep 17 00:00:00 2001 From: heyarne Date: Thu, 7 May 2020 07:31:51 +0200 Subject: [PATCH] Use aero for config and make first deployable version --- .dockerignore | 1 + README.md | 12 ++++++++++++ deps.edn | 2 +- resources/config.edn | 1 + shadow-cljs.edn | 2 +- .../all_my_friends/{core.cljs => client.cljs} | 2 +- src/heyarne/all_my_friends/env.cljc | 5 +++++ src/heyarne/all_my_friends/server.clj | 13 ++++++------- 8 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 README.md create mode 100644 resources/config.edn rename src/heyarne/all_my_friends/{core.cljs => client.cljs} (95%) create mode 100644 src/heyarne/all_my_friends/env.cljc diff --git a/.dockerignore b/.dockerignore index cf0a700..2c36d88 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,3 +4,4 @@ node_modules resources/public/js .git target +pom.xml diff --git a/README.md b/README.md new file mode 100644 index 0000000..e07a3eb --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# All my Friends + +This is scratching a weird itch that started when I saw my friends mostly online. + +## Important paths + +* `src/heyarne/all_my_friends/server.clj`: Contains a simple HTTP server that serves static files and has a handler for uploads +* `src/heyarne/all_my_friends/client.cljs`: Is the starting point for the client application +* `resources/config.edn`: Uses [aero](https://github.com/juxt/aero/tree/1ecae6465405643aaacd54b9b45b4fdb92d1cf7a) for configuration. +* `resources/public`: Contains HTML and CSS files. `resources/public/js` is automatically compiled. +* `deps.edn`: Client and server dependencies and build configuration +* `shadow-cljs.edn`: Client-side build config for [shadow-cljs](https://shadow-cljs.github.io/docs/UsersGuide.html) diff --git a/deps.edn b/deps.edn index 4ddd7c1..e5440c4 100644 --- a/deps.edn +++ b/deps.edn @@ -1,6 +1,6 @@ {:paths ["src" "resources"] :deps {org.clojure/clojure {:mvn/version "1.10.1"} - environ {:mvn/version "1.1.0"} + aero {:mvn/version "1.1.6"} http-kit {:mvn/version "2.3.0"} compojure {:mvn/version "1.6.1"} ring-logger {:mvn/version "1.0.1"}} diff --git a/resources/config.edn b/resources/config.edn new file mode 100644 index 0000000..00266d8 --- /dev/null +++ b/resources/config.edn @@ -0,0 +1 @@ +{:port #long #or [#env PORT 8081]} diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 218e425..5aa96be 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -6,4 +6,4 @@ {:app {:target :browser :output-dir "resources/public/js" :asset-path "/js" - :modules {:main {:entries [heyarne.all-my-friends.core]}}}}} + :modules {:main {:entries [heyarne.all-my-friends.client]}}}}} diff --git a/src/heyarne/all_my_friends/core.cljs b/src/heyarne/all_my_friends/client.cljs similarity index 95% rename from src/heyarne/all_my_friends/core.cljs rename to src/heyarne/all_my_friends/client.cljs index 261058d..b08410f 100644 --- a/src/heyarne/all_my_friends/core.cljs +++ b/src/heyarne/all_my_friends/client.cljs @@ -1,4 +1,4 @@ -(ns heyarne.all-my-friends.core +(ns heyarne.all-my-friends.client (:require [applied-science.js-interop :as j] [reagent.dom :as dom] [heyarne.all-my-friends.views :as views])) diff --git a/src/heyarne/all_my_friends/env.cljc b/src/heyarne/all_my_friends/env.cljc new file mode 100644 index 0000000..86438f2 --- /dev/null +++ b/src/heyarne/all_my_friends/env.cljc @@ -0,0 +1,5 @@ +(ns heyarne.all-my-friends.env + [:require [aero.core :refer [read-config]] + [clojure.java.io :as io]]) + +(def env (read-config (io/resource "config.edn"))) diff --git a/src/heyarne/all_my_friends/server.clj b/src/heyarne/all_my_friends/server.clj index b05df46..b564ae8 100644 --- a/src/heyarne/all_my_friends/server.clj +++ b/src/heyarne/all_my_friends/server.clj @@ -3,8 +3,8 @@ [compojure.core :as router] [compojure.route :as route] [clojure.java.io :as io] - [environ.core :refer [env]] - [ring.logger :as logger]) + [ring.logger :as logger] + [heyarne.all-my-friends.env :refer [env]]) (:gen-class)) (router/defroutes app @@ -26,11 +26,10 @@ (defn -main [& args] - (let [port (Integer/parseInt (env :port "8081"))] - (println "Starting server on port" port) - (reset! server (-> #'app - (logger/wrap-with-logger) - (http/run-server {:port port}))))) + (println "Starting server on port" (env :port)) + (reset! server (-> #'app + (logger/wrap-with-logger + (http/run-server {:port (env :port)}))))) #_(-main) #_(stop-server)