Skip to content

Commit

Permalink
use monorepo
Browse files Browse the repository at this point in the history
  • Loading branch information
tiye committed Jun 27, 2016
1 parent 843bdd8 commit 0f61d79
Show file tree
Hide file tree
Showing 29 changed files with 553 additions and 13 deletions.
13 changes: 0 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +0,0 @@

Teakits
----

Tickets of tasks.

### Project Template

https://github.com/mvc-works/boot-workflow

### License

MIT
File renamed without changes.
13 changes: 13 additions & 0 deletions app/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

Teakits
----

Tickets of tasks.

### Project Template

https://github.com/mvc-works/boot-workflow

### License

MIT
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes.
8 changes: 8 additions & 0 deletions server/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

/target
/src

/node_modules

/.nrepl*
/figwheel*
21 changes: 21 additions & 0 deletions server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

Teakits server
----

Server code for https://github.com/Cumulo/teakits

### Usage

```bash
boot compile-cirru # to get ClojureScript code
boot dev # start REPL
# (start-figwheel!) ; to run in developing mode
# cd target/; node app.js
boot build-simple # generate static code
boot build-build # generate code and minimize
# cd target/; node main.js
```

### License

MIT
116 changes: 116 additions & 0 deletions server/build.boot
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@

(set-env!
:dependencies '[[org.clojure/clojurescript "1.9.76" :scope "test"]
[org.clojure/clojure "1.8.0" :scope "test"]
[adzerk/boot-cljs "1.7.228-1" :scope "test"]
[figwheel-sidecar "0.5.4-3" :scope "test"]
[cirru/boot-cirru-sepal "0.1.8" :scope "test"]
[com.cemerick/piggieback "0.2.1" :scope "test"]
[org.clojure/tools.nrepl "0.2.10" :scope "test"]
[ajchemist/boot-figwheel "0.5.4-2" :scope "test"]
[adzerk/boot-test "1.1.1" :scope "test"]
[cumulo/server "0.1.0"]])

(require '[adzerk.boot-cljs :refer [cljs]]
'[adzerk.boot-test :refer :all]
'[cirru-sepal.core :refer [transform-cirru]]
'[boot-figwheel])

(refer 'boot-figwheel :rename '{cljs-repl fw-cljs-repl}) ; avoid some symbols

(def +version+ "0.1.0")

(task-options!
pom {:project 'cumulo/teakits
:version +version+
:description "Workflow"
:url "https://github.com/Cumulo/teakits"
:scm {:url "https://github.com/Cumulo/teakits"}
:license {"MIT" "http://opensource.org/licenses/mit-license.php"}})

(deftask compile-cirru []
(set-env!
:source-paths #{"cirru/"})
(comp
(transform-cirru)
(target :dir #{"compiled/"})))

(task-options!
figwheel {:build-ids ["dev"]
:all-builds [{:id "dev"
:compiler {:main 'teakits-server.core
:target :nodejs
:output-to "app.js"}
:figwheel {:build-id "dev"
:on-jsload 'teakits-server.core/on-jsload
:autoload true
:heads-up-display true}}]
:figwheel-options {:repl true
:open-file-command "e"}})

(deftask watch-cirru []
(set-env!
:source-paths #{"cirru/"})
(comp
(watch)
(transform-cirru)
(target :dir #{"compiled/"})))

(deftask dev []
(set-env!
:source-paths #(into % ["compiled/src/"]))
(comp
(repl)
(figwheel)
(target)))

(deftask build-simple []
(set-env!
:source-paths #{"cirru/src"})
(comp
(transform-cirru)
(cljs :optimizations :simple :compiler-options {:target :nodejs})
(target)))

(deftask build-advanced []
(set-env!
:source-paths #{"cirru/src"})
(comp
(transform-cirru)
(cljs :optimizations :advanced :compiler-options {:target :nodejs})
(target)))

(deftask rsync []
(with-pre-wrap fileset
(sh "rsync" "-r" "target/" "tiye:repo/Cumulo/teakits-server" "--exclude" "main.out" "--delete")
fileset))

(deftask send-tiye []
(comp
(build-simple)
(rsync)))

(deftask build []
(set-env!
:source-paths #{"cirru/src"})
(comp
(transform-cirru)
(pom)
(jar)
(install)
(target)))

(deftask deploy []
(set-env!
:repositories #(conj % ["clojars" {:url "https://clojars.org/repo/"}]))
(comp
(build)
(push :repo "clojars" :gpg-sign (not (.endsWith +version+ "-SNAPSHOT")))))

(deftask watch-test []
(set-env!
:source-paths #{"cirru/src" "cirru/test"})
(comp
(watch)
(transform-cirru)
(test :namespaces '#{boot-workflow.test})))
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/core.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.core",[":require-macros",["[]","cljs.core.async.macros",":refer",["[]","go"]]],[":require",["[]","cljs.nodejs",":as","nodejs"],["[]","teakits-server.schema",":as","schema"],["[]","teakits-server.updater.core",":refer",["[]","update-store"]],["[]","teakits-server.view.viewer",":refer",["[]","extract-tree"]],["[]","cumulo-server.core",":refer",["[]","setup-server!","reload-renderer!"]],["[]","cljs.reader",":as","reader"]]],["def","fs",["js/require","|fs"]],["def","db-filename","|db.edn"],["defonce","data-center",["atom",["if",[".existsSync","fs","db-filename"],["let",[["old-db",["reader/read-string",[".readFileSync","fs","db-filename","|utf8"]]]],["assoc","old-db",":states",["{}"]]],"schema/database"]]],["defonce","file-cache",["atom","@data-center"]],["defn","-main",[],["nodejs/enable-util-print!"],["js/setInterval",["fn",[],["if",["not=","@data-center","@file-cache"],["do",["reset!","file-cache","@data-center"],[".writeFileSync","fs","db-filename",["pr-str","@file-cache"]],["println","|wrote to ","db-filename"]]]],"20000"],["setup-server!","data-center","update-store","identity","extract-tree",["{}",[":port","4010"]]],["println","|server started"]],["set!","*main-cli-fn*","-main"],["defn","on-jsload",[],["println","|reload"],["reload-renderer!","@data-center","update-store","identity","extract-tree"]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/schema.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.schema"],["def","default-avatar","|http://tp2.sinaimg.cn/1258256457/50/5616578718/1"],["def","database",["{}",[":users",["{}"]],[":states",["{}"]],[":tags",["{}"]],[":topics",["{}"]]]],["def","state",["{}",[":id","nil"],[":user-id","nil"],[":notifications",["{}"]],[":router",["[]",":home","nil"]],[":results",["{}"]]]],["def","user",["{}",[":id","nil"],[":name","nil"],[":tag-ids",["hash-set"]],[":avatar","default-avatar"],[":password","|"]]],["def","tag",["{}",[":id","nil"],[":text","nil"]]],["def","topic",["{}",[":id","nil"],[":text","nil"],[":tag-ids",["hash-set"]],[":time","nil"]]],["def","message",["{}",[":id","nil"],[":user-id","nil"],[":topic-id","nil"],[":time","nil"],[":text","|"]]],["def","store",["{}",[":state","nil"],[":my-tags",["list"]],[":tags",["list"]],[":topics",["list"]],[":my-topics",["list"]],[":user","nil"],[":current-topic","nil"],[":live-users",["list"]],[":buffer","|"]]],["def","notification",["{}",[":id","nil"],[":text","|"],[":type",":info"]]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/updater/core.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.updater.core",[":require",["[]","teakits-server.updater.state",":as","state"],["[]","teakits-server.updater.user",":as","user"]]],["defn","no-op-updater",["db","op-data","state-id","op-id","op-time"],"db"],["defn","update-store",["db","op","op-data","state-id","op-id","op-time"],["--",".log","js/console","|trying to update store"],["let",[["hint","|found no handler for:"],["update-method",["case","op",[":state/connect","state/connect"],[":state/disconnect","state/connect"],[":state/route","state/route"],[":state/buffer","state/buffer"],[":user/enter","user/enter"],[":user/rm-tag","user/rm-tag"],[":user/update","user/update-profile"],[":user/select-tag","user/select-tag"],[":user/logout","user/logout"],["do",["println","hint","op","op-data"],"no-op-updater"]]]],["update-method","db","op-data","state-id","op-id","op-time"]]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/updater/state.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.updater.state",[":require",["[]","teakits-server.schema",":as","schema"]]],["defn","connect",["db","op-data","state-id","op-id","op-time"],["assoc-in","db",["[]",":states","state-id"],["assoc","schema/state",":id","state-id"]]],["defn","disconnect",["db","op-data","state-id","op-id","op-time"],["update","db",":states",["fn",["states"],["dissoc","states","state-id"]]]],["defn","route",["db","op-data","state-id","op-id","op-time"],["->","db",["assoc-in",["[]",":states","state-id",":router"],["if",["keyword?","op-data"],["[]","op-data","nil"],"op-data"]],["assoc-in",["[]",":states","state-id",":buffer"],"|"]]],["defn","buffer",["db","op-data","state-id","op-id","op-time"],["assoc-in","db",["[]",":states","state-id",":buffer"],"op-data"]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/updater/user.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.updater.user",[":require",["[]","teakits-server.schema",":as","schema"],["[]","teakits-server.util.list",":refer",["[]","find-one"]]]],["defn","enter",["db","op-data","state-id","op-id","op-time"],["let",[["username",[":name","op-data"]],["password",[":password","op-data"]],["maybe-user",["find-one",["fn",["user"],["=","username",[":name","user"]]],["vals",[":users","db"]]]]],["if",["some?","maybe-user"],["if",["=","password",[":password","maybe-user"]],["->","db",["assoc-in",["[]",":states","state-id",":user-id"],[":id","maybe-user"]],["assoc-in",["[]",":states","state-id",":router"],["[]",":my-tags","nil"]]],["do",["println","|wrong password","password","maybe-user"],"db"]],["->","db",["assoc-in",["[]",":users","op-id"],["assoc","schema/user",":id","op-id",":name","username",":password","password"]],["assoc-in",["[]",":states","state-id",":router"],["[]",":my-tags","nil"]],["assoc-in",["[]",":states","state-id",":user-id"],"op-id"]]]]],["defn","rm-tag",["db","op-data","state-id","op-id","op-time"],["let",[["state",["get-in","db",["[]",":states","state-id"]]],["user-id",[":user-id","state"]],["user",["get-in","db",["[]",":users","user-id"]]]],["update-in","db",["[]",":users","user-id",":tag-ids"],["fn",["tag-ids"],["->>","tag-ids",["filter",["fn",["tag-id"],["not=","tag-id","op-data"]]],["into",["hash-set"]]]]]]],["defn","select-tag",["db","op-data","state-id","op-id","op-time"],["let",[["user-id",["get-in","db",["[]",":states","state-id",":user-id"]]]],["update-in","db",["[]",":users","user-id",":tag-ids"],["fn",["tag-ids"],["if",["<",["count","tag-ids"],"5"],["into",["hash-set"],["conj","tag-ids","op-data"]],"tag-ids"]]]]],["defn","update-profile",["db","op-data","state-id","op-id","op-time"],["let",[["user-id",["get-in","db",["[]",":states","state-id",":user-id"]]]],["update-in","db",["[]",":users","user-id"],["fn",["user"],["merge","user","op-data"]]]]],["defn","logout",["db","op-data","state-id","op-id","op-time"],["assoc-in","db",["[]",":states","state-id",":user-id"],"nil"]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/util/list.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.util.list"],["defn","find-one",["method","xs"],["if",["=","0",["count","xs"]],"nil",["let",[["cursor",["first","xs"]]],["if",["method","cursor"],"cursor",["recur","method",["rest","xs"]]]]]],["defn","filter-n",[["n","method","xs"],["filter-n",["list"],"n","method","xs"]],[["acc","n","method","xs"],["if",["=","0",["count","xs"]],"acc",["let",[["cursor",["first","xs"]],["next-acc",["if",["method","cursor"],["cons","cursor","acc"],"acc"]]],["if",[">=",["count","next-acc"],"n"],"next-acc",["recur","next-acc","n","method",["rest","xs"]]]]]]]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/view/scene.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.view.scene"]]
1 change: 1 addition & 0 deletions server/cirru/src/teakits_server/view/viewer.cljs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["ns","teakits-server.view.viewer",[":require",["[]","teakits-server.schema",":as","schema"]]],["defn","extract-tree",["state-id","db"],["let",[["state",["get-in","db",["[]",":states","state-id"]]],["router",[":router","state"]],["user-id",[":user-id","state"]],["live-users",["->>",["vals",[":states","db"]],["filter",["fn",["state"],["some?",[":user-id","state"]]]],["map",["fn",["state"],["get-in","db",["[]",":users",[":user-id","state"]]]]]]]],["if",["some?","user-id"],["let",[["user",["get-in","db",["[]",":users","user-id"]]],["router",["get-in","db",["[]",":states","state-id",":router"]]],["my-tags",["->>",[":tag-ids","user"],["map",["fn",["tag-id"],["get-in","db",["[]",":tags","tag-id"]]]]]],["tags",["map","val",[":tags","db"]]],["topics",["->>",["vals",[":topics","db"]],["map",["fn",["topic"],["let",[["tags",["->>",[":tag-ids","topic"],["map",["fn",["tag-id"],["get-in","db",["[]",":tags","tag-id"]]]]]]],["->","topic",["dissoc",":messages"],["assoc",":tags","tags"],["assoc",":messages-count",["count",[":messages","topic"]]]]]]]]],["my-topics",["->>",["vals",[":topics","db"]],["filter",["fn",["topic"],["if",["and",["=",":topics",["first","router"]],["some?",["get","router","1"]]],["contains?",[":tag-ids","topic"],["get","router","1"]],["some",["fn",["tag-id"],["contains?",[":tag-ids","topic"],"tag-id"]],[":tag-ids","user"]]]]],["map",["fn",["topic"],["let",[["tags",["->>",[":tag-ids","topic"],["map",["fn",["tag-id"],["get-in","db",["[]",":tags","tag-id"]]]]]]],["->","topic",["dissoc",":messages"],["assoc",":tags","tags"],["assoc",":messages-count",["count",[":messages","topic"]]]]]]]]],["topic-id",["if",["=",":chat-room",["first","router"]],["get","router","1"],"nil"]],["current-topic",["if",["nil?","topic-id"],"nil",["update",["get-in","db",["[]",":topics","topic-id"]],":messages",["fn",["messages"],["->>","messages",["map",["fn",["entry"],["let",[["message",["val","entry"]],["avatar",["get-in","db",["[]",":users",[":user-id","message"],":avatar"]]],["new-message",["assoc","message",":avatar",["if",[">",["count","avatar"],"5"],"avatar","schema/default-avatar"]]]],["[]",["key","entry"],"new-message"]]]],["into",["{}"]]]]]]],["buffers",["if",["nil?","topic-id"],["list"],["->>",["vals",[":states","db"]],["filter",["fn",["state"],["and",["some?",[":user-id","state"]],[">=",["count",[":buffer","state"]],"0"],["=",[":router","state"],"router"]]]],["map",["fn",["state"],["let",[["user",["get-in","db",["[]",":users",[":user-id","state"]]]]],["{}",[":id","state-id"],[":text",[":buffer","state"]],[":avatar",[":avatar","user"]],[":user","user"]]]]]]]]],["assoc","schema/store",":state","state",":tags","tags",":my-tags","my-tags",":topics","topics",":user","user",":current-topic","current-topic",":live-users","live-users",":buffers","buffers",":my-topics","my-topics"]],["assoc","schema/store",":state","state",":live-users","live-users"]]]]]
47 changes: 47 additions & 0 deletions server/compiled/src/teakits_server/core.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@

(ns teakits-server.core
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [cljs.nodejs :as nodejs]
[teakits-server.schema :as schema]
[teakits-server.updater.core :refer [update-store]]
[teakits-server.view.viewer :refer [extract-tree]]
[cumulo-server.core :refer [setup-server! reload-renderer!]]
[cljs.reader :as reader]))

(def fs (js/require "fs"))

(def db-filename "db.edn")

(defonce data-center
(atom
(if (.existsSync fs db-filename)
(let [old-db (reader/read-string
(.readFileSync fs db-filename "utf8"))]
(assoc old-db :states {}))
schema/database)))

(defonce file-cache (atom @data-center))

(defn -main []
(nodejs/enable-util-print!)
(js/setInterval
(fn []
(if (not= @data-center @file-cache)
(do
(reset! file-cache @data-center)
(.writeFileSync fs db-filename (pr-str @file-cache))
(println "wrote to " db-filename))))
20000)
(setup-server!
data-center
update-store
identity
extract-tree
{:port 4010})
(println "server started"))

(set! *main-cli-fn* -main)

(defn on-jsload []
(println "reload")
(reload-renderer! @data-center update-store identity extract-tree))
40 changes: 40 additions & 0 deletions server/compiled/src/teakits_server/schema.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

(ns teakits-server.schema)

(def default-avatar "http://tp2.sinaimg.cn/1258256457/50/5616578718/1")

(def database {:tags {}, :states {}, :topics {}, :users {}})

(def state
{:router [:home nil],
:user-id nil,
:notifications {},
:id nil,
:results {}})

(def user
{:password "",
:name nil,
:id nil,
:avatar default-avatar,
:tag-ids (hash-set)})

(def tag {:id nil, :text nil})

(def topic {:time nil, :id nil, :tag-ids (hash-set), :text nil})

(def message
{:time nil, :user-id nil, :id nil, :topic-id nil, :text ""})

(def store
{:my-topics (list),
:tags (list),
:my-tags (list),
:state nil,
:topics (list),
:live-users (list),
:current-topic nil,
:user nil,
:buffer ""})

(def notification {:type :info, :id nil, :text ""})
32 changes: 32 additions & 0 deletions server/compiled/src/teakits_server/updater/core.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

(ns teakits-server.updater.core
(:require [teakits-server.updater.state :as state]
[teakits-server.updater.user :as user]))

(defn no-op-updater [db op-data state-id op-id op-time] db)

(defn update-store [db op op-data state-id op-id op-time]
(comment .log js/console "trying to update store")
(let [hint "found no handler for:"
update-method (case
op
:state/connect
state/connect
:state/disconnect
state/connect
:state/route
state/route
:state/buffer
state/buffer
:user/enter
user/enter
:user/rm-tag
user/rm-tag
:user/update
user/update-profile
:user/select-tag
user/select-tag
:user/logout
user/logout
(do (println hint op op-data) no-op-updater))]
(update-method db op-data state-id op-id op-time)))
19 changes: 19 additions & 0 deletions server/compiled/src/teakits_server/updater/state.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

(ns teakits-server.updater.state
(:require [teakits-server.schema :as schema]))

(defn connect [db op-data state-id op-id op-time]
(assoc-in db [:states state-id] (assoc schema/state :id state-id)))

(defn disconnect [db op-data state-id op-id op-time]
(update db :states (fn [states] (dissoc states state-id))))

(defn route [db op-data state-id op-id op-time]
(-> db
(assoc-in
[:states state-id :router]
(if (keyword? op-data) [op-data nil] op-data))
(assoc-in [:states state-id :buffer] "")))

(defn buffer [db op-data state-id op-id op-time]
(assoc-in db [:states state-id :buffer] op-data))
Loading

0 comments on commit 0f61d79

Please sign in to comment.