;;; Application level configuration file.
;;; See app.org.edn in CLJStron for file generation.
;;;
;;; Values of parent is recursively read first.
;;; Every given value replaces value of the parent for its key.
;;;
;;; Then recursively every values in the key-values pairs are replaced :
;;; - If it's a keyword it's replaced by the associated key value until it's a non key
;;; - If it's a map keyed values are transformed recursively.
;;; - If it's a set values are transformed recursively.
;;; - If it's a vector values are transformed recursively.
;;; - If it's a list values are transformed recursively.
;;;   - If the first value of the list is a known function it is executed
;;;     There is different levels of execution :base, :final and :write.
;;;     - :base functions are executed recursively.
;;;       - (str ...) When all values are transformed in strings, concatene these.
;;;       - (loop apps code) Code is generated for all values of the listed apps definitions.
;;;       - (symbol ...) Arg is recursively transformed until String witch is transformed in symbol.
;;;       - (quote ...) Keep value unmodified. (i.e. keeping keywords uninterpreted).
;;;     - :final. Executed at the end.
;;;       - (quote ...) Suppress the (quote) letting only argument.
;;;     - :write. Last transform based only on text file.
;;;       - (inline ...) get the string and put it litterally in place w/o double quotes. i.e.for meta-data
{
  :include "app.org.edn"
  ;; default values for whole app
  :app
  {
    :parent :-base
    :user       "cljstron"
    :mail-host  "gmail.com"
    :version    "0.0.7"
    :licence    "MIT"
    :resources  "resources"
    :author     "Ivan Pierre <kilroysoft@gmail.com> http://about.me/ivan_pierre"
    :src        ["src"]
    :apps       (quote [:main])
    :bins       {:cljstron "./main.js"} ;; this sucks, missing electron
    :repository { :type "git"
                  :url :git-url}

    :cljs-deps
    [ [camel-snake-kebab          "0.4.0"]
      [cljs-node-io               "0.5.0"]
      [org.clojure/tools.reader   "1.1.0"]]
      ;[reagent                   "0.6.1"]
      ;[ring/ring-core            "1.6.1"]

    :lein-deps
    [ [org.clojure/clojurescript  "1.9.946"]
      [figwheel                   "0.5.14"]
      [im.chit/hara.reflect       "2.5.10"]
      [org.clojure/clojure        "1.9.0"]]

    :plug-ins
    [ [lein-cljsbuild             "1.1.7"]
      [lein-figwheel              "0.5.10"]
      [lein-cooper                "1.2.2"]]

    :npm-deps
    { :electron                   "^1.7.10"
      :shadow-cljs                "^2.0.117"}

    :keywords
    [ "electron"
      "clojurescript"
      "CLJStron"]}

  ;; values for main app
  :main
  { :parent :app
    :id :main
    :str-id "main"
    :project "cljstron"
    :exec "main"
    :bugs-mail (str :user "@" :mail-host)
    :scripts {:start "electron ."}
    :description
      "A library to manage and develop `electron` applications in `ClojureScript`... and `Clojure`?"}

  :plugs
  { :parent :app
    :simple
    { :project "cljstron-simple"
      :window :exec}}}
