From 29cde5092bc1271284750346ea15891a2428ad5e Mon Sep 17 00:00:00 2001 From: caumond Date: Sat, 15 Mar 2025 20:09:03 +0100 Subject: [PATCH 1/2] align_cfg_files --- .github/workflows/commit_validation.yml | 36 +++++------ .gitignore | 21 ++++-- .zprintrc | 3 +- README.org | 4 +- bb.edn | 36 ++++++----- deps.edn | 82 +++++++++++------------- docs/img/automaton_duck.png | Bin 0 -> 46885 bytes package-lock.json | 40 ++++++------ shadow-cljs.edn | 4 +- 9 files changed, 115 insertions(+), 111 deletions(-) create mode 100644 docs/img/automaton_duck.png diff --git a/.github/workflows/commit_validation.yml b/.github/workflows/commit_validation.yml index 4b8830e..91090b0 100644 --- a/.github/workflows/commit_validation.yml +++ b/.github/workflows/commit_validation.yml @@ -1,3 +1,4 @@ +# V1 - For all projects name: Commit validation on: push: @@ -18,45 +19,44 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Cache clojure dependencies - uses: actions/cache@v4 - with: - path: /home/runner/.m2/repository - key: cljdeps-${{ hashFiles('deps.edn', 'bb.edn') }} - restore-keys: cljdeps- - name: Install java uses: actions/setup-java@v4 with: - distribution: 'zulu' - java-version: '22' + distribution: 'temurin' + java-version: '21' + check-latest: true - name: Install clojure tools # See https://github.com/DeLaGuardo/setup-clojure/commits/main/ - uses: DeLaGuardo/setup-clojure@cc67f8308550d0f18b0ba445c2476f84626a5d6a #v13.0 + uses: DeLaGuardo/setup-clojure@ada62bb3282a01a296659d48378b812b8e097360 #v13.2 with: - cli: 1.12.0.1479 # Clojure CLI based on tools.deps - bb: 1.12.195 # Babashka - clj-kondo: 2024.11.14 # Clj-kondo - zprint: 1.2.9 # zprint + cli: 1.12.0.1530 + bb: 1.12.197 + clj-kondo: 2025.02.20 + zprint: 1.2.9 - name: Lint run: bb lint -v - name: Setup zprint run: echo "{:search-config? true}" >> ~/.zprintrc - name: Install fdfind run: sudo rm /var/lib/man-db/auto-update && sudo apt-get install -y fd-find && mkdir -p ~/.local/bin/ && PATH=$PATH:~/.local/bin/ && ln -s $(which fdfind) ~/.local/bin/fd + - name: Cache clojure dependencies + uses: actions/cache@v4 + with: + path: /home/runner/.m2/repository + key: cljdeps-${{ hashFiles('deps.edn', 'bb.edn', '.github/workflows/commit_validation.yml') }} + restore-keys: cljdeps- - name: format again to check the code pushed was uptodate run: bb format -v - name: Write git diff - show what has been changed by zprint run: git diff - name: Pushed code should already be formatted # See https://github.com/CatChen/check-git-status-action - uses: CatChen/check-git-status-action@bde80484b437cece974f79da735a5cd1dfdc9b0b #v1 + uses: CatChen/check-git-status-action@fb60fe626b56d5a4adcb227327ba4d24326a873a #v1.4.4 with: fail-if-not-clean: true request-changes-if-not-clean: false push-if-not-clean: false - - name: test code in clojure - run: bb clj-test test-clj -v - - name: test code in clojurescript - run: bb cljs-node-test all -v + - name: test + run: bb gha - name: print infos just for debugging, and the logs run: bb heph-info diff --git a/.gitignore b/.gitignore index 3e1d3a4..6bde38b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,28 @@ +# V2 With javascript +# ******************************************************************************** +# auto-core +# ******************************************************************************** +## auto-build **/**/.nrepl-port **/.DS_Store **/.clj-kondo/.cache **/.cpcache/ -# Private credentials +### Private credentials **/.clever.json **/tmp +**/target -#intellij +### Intellij .idea/ **.iml **/**.iml -node_modules -.shadow-cljs - docs/wiki/ docs/codox/ -target + +## auto-core +**/.shadow-cljs +**/node_modules +**/.clever.json +**/.clever +pom.properties diff --git a/.zprintrc b/.zprintrc index ebbd6af..54f0e93 100644 --- a/.zprintrc +++ b/.zprintrc @@ -1,4 +1,5 @@ -;;See [doc](https://github.com/kkinnear/zprint/blob/d0bb27e51ac97b1cdae5ea32b9b953f66cd650b2/doc/reference.md#introduction-to-configuration) for more details +;; V1 - For all projects +;; See [doc](https://github.com/kkinnear/zprint/blob/d0bb27e51ac97b1cdae5ea32b9b953f66cd650b2/doc/reference.md#introduction-to-configuration) for more details {:style [:community :how-to-ns :sort-require diff --git a/README.org b/README.org index 418892a..4b047d4 100644 --- a/README.org +++ b/README.org @@ -20,8 +20,8 @@ If every tool, when ordered, or even of its own accord, could do the work that b * Main features - This project should be agnostic of any environment, so it should run on the following examples of technology: CLI, backend of web app, frontend of web app, Android frontend, Android backend, ... -- Create cljc versions of features which are not naturally behaving the same between clj and cljs: uuids, -- Data strucutre helpers : regular expression, strings, keywords, maps, sequences, uuids +- Create cljc versions of features which are not naturally behaving the same between clj and cljs: uuids, utf8 text coloring, format, regexp ... +- Data structure helpers : regular expression, strings, keywords, maps, sequences, uuids - Logging in clj and cljs with a proxy from cljc - Configuration management - Translation diff --git a/bb.edn b/bb.edn index 9a06ec2..0645d13 100644 --- a/bb.edn +++ b/bb.edn @@ -1,10 +1,13 @@ -{:deps {io.github.hephaistox/auto-build {:git/sha "dd5f949add930adba45fc440bf18412a4069683c"}} +{:deps {com.github.hephaistox/auto-build {:git/sha "c2da9180d515aa63b8a3edf769c6821938af602e"}} :paths ["src"] :tasks - {:init (do (def ^:dynamic exit System/exit)) - :requires [;;NOTE Should be as small as possible to ensure `lconnect` - ;;can start whatever the state of the code is. - [auto-build.os.exit-codes]] + {-uberjar {:doc "Uberjar" + :override-builtin true + :requires [[auto-build.tasks.uberjar :as build-uberjar] + [auto-build.echo :refer [level1-header]]] + :task (-> (build-uberjar/uberjar level1-header "." "target/uberjar" "") + exit)} + :requires [[auto-build.os.exit-codes] [auto-build.os.exiting :refer [exit]]] bp {:doc "Before push" :task (binding [exit (fn [exit-code & _] (when-not (zero? exit-code) exit-code))] (-> (or (run 'format) @@ -18,7 +21,11 @@ clean {:doc "Clean temporary files" :requires [[auto-build.tasks.clean :as task-clean] [auto-build.echo :refer [level1-header]]] - :task (-> (task-clean/clean level1-header "." [".DS_Store"] [".cpcache"] (current-task)) + :task (-> (task-clean/clean level1-header + "." + [".DS_Store"] + [".cpcache" ".shadow-cljs" "node_modules" "tmp" "target"] + (current-task)) exit)} clj-test {:doc "Test with clj" @@ -49,18 +56,20 @@ :task (do (shell "clj -M:antq") (shell "npm upgrade"))} docs {:doc "Docs" :requires [[auto-build.tasks.docs :as build-docs] [auto-build.echo :refer [level1-header]]] - :task (-> (build-docs/docs level1-header "." (current-task) "gh-pages") + :task (-> (build-docs/docs level1-header "." (current-task) "gh-pages" "codox") exit)} format {:doc "Format" :requires [[auto-build.tasks.formatting :as task-format] [auto-build.echo :refer [level1-header]]] :task (-> (task-format/format level1-header "." (current-task)) exit)} + gha {:doc "For github action tests" + :task (do (shell "bb clj-test test-clj -v") (shell "bb cljs-node-test all -v"))} heph-info {:doc "Hephaistox project info" :extra-paths ["env/dev/resources"] :requires [[auto-build.tasks.heph-info :as heph-info] [auto-build.echo :refer [level1-header]]] - :task (-> (heph-info/heph-info level1-header (current-task)) + :task (-> (heph-info/heph-info level1-header (current-task) ".") exit)} lint {:doc "Lint" :requires [[auto-build.tasks.lint :as task-lint] [auto-build.echo :refer [level1-header]]] @@ -69,11 +78,6 @@ repl {:doc "Clojure repl" :override-builtin true :requires [[auto-build.tasks.repl :as build-repl] [auto-build.echo :refer [level1-header]]] - :task (-> (build-repl/repl level1-header "." (current-task)) - exit)} - uberjar {:doc "Uberjar" - :override-builtin true - :requires [[auto-build.tasks.uberjar :as build-uberjar] - [auto-build.echo :refer [level1-header]]] - :task (-> (build-uberjar/uberjar level1-header "." "target/uberjar" "") - exit)}}} + :task + (-> (build-repl/repl level1-header "." (current-task) [:build :cljs-deps :test-clj] 7002) + exit)}}} \ No newline at end of file diff --git a/deps.edn b/deps.edn index 45d8da8..1a1425b 100644 --- a/deps.edn +++ b/deps.edn @@ -1,49 +1,39 @@ -{:aliases - {:antq {:deps {com.github.liquidz/antq {:mvn/version "2.10.1241"}} - :main-opts ["-m" "antq.core"]} - :build {:deps {io.github.clojure/tools.build {:git/sha "52cf7d6" - :git/tag "v0.10.6"}} - :extra-paths ["build"]} - :clj-test-runner {:exec-fn cognitect.test-runner.api/test - :extra-deps {com.cognitect/test-runner - {:git/url "https://github.com/cognitect-labs/test-runner" - :sha "3f288f1f16d167723ad87cc35b1dfee3c1681e10"}}} - :cljs-deps {:extra-deps {metosin/malli #:mvn{:version "0.16.1"} - thheller/shadow-cljs {:mvn/version "2.28.19"}} - :extra-paths - ["src/cljc" "src/cljs" "env/dev/resources" "test/cljc" "test/cljs" "test/resources"]} - :codox {:exec-args - {:description - "`auto-core` is about all core technical functionalities we may need to start a project." - :doc-paths ["docs/codox"] - :metadata {:doc/format :markdown} - :name "auto-core" - :source-uri "https://github.com/hephaistox/auto-core/blob/{version}/{filepath}#L{line}"} - :exec-fn codox.main/generate-docs - :extra-deps {codox/codox {:mvn/version "0.10.8"}}} - :repl {:exec-args {:port 7001} - :exec-fn auto-build.repl.entry-point/start - :extra-deps {cider/cider-nrepl {:mvn/version "0.50.2"} - io.github.hephaistox/auto-build {:git/sha - "e907e29f65049a805c5a33e2f60bbe838c268a1a"} - refactor-nrepl/refactor-nrepl {:mvn/version "3.10.0"}} - :extra-paths - ["env/dev/resources" "test/clj" "test/cljc" "test/resources" "test/src" "test/resources"]} - :test-clj {:extra-paths ["test/clj" "test/cljc" "test/resources"] - :main-opts - ["-m" "cognitect.test-runner" "-r" ".*-test.*" "-d" "test/clj" "test/cljc"]}} - :deps {babashka/fs #:mvn{:version "0.5.22"} - babashka/process #:mvn{:version "0.5.22"} - com.taoensso/tempura #:mvn{:version "1.5.4"} +{:aliases {:antq {:deps {com.github.liquidz/antq {:mvn/version "2.11.1276"} + org.slf4j/slf4j-nop {:mvn/version "2.0.17"}} + :main-opts ["-m" "antq.core"]} + :build {:extra-deps {io.github.clojure/tools.build + {:git/sha "65b3c45a72b6862783664c436817ad0610372398"}} + :extra-paths ["build"]} + :clj-test-runner {:exec-fn cognitect.test-runner.api/test + :extra-deps {com.cognitect/test-runner + {:git/url "https://github.com/cognitect-labs/test-runner" + :sha "3f288f1f16d167723ad87cc35b1dfee3c1681e10"}}} + :cljs-deps {:extra-deps {thheller/shadow-cljs {:mvn/version "2.28.21"}} + :extra-paths + ["src/cljc" "env/dev/resources" "test/cljc" "test/cljs" "test/resources"]} + :codox {:exec-args + {:description "`auto-core` is about core technical functionalities" + :doc-paths ["docs/codox"] + :metadata {:doc/format :markdown} + :name "auto-core" + :source-uri + "https://github.com/hephaistox/auto-core/blob/{version}/{filepath}#L{line}"} + :exec-fn codox.main/generate-docs + :extra-deps {codox/codox {:mvn/version "0.10.8"}}} + :test-clj {:extra-paths ["test/clj" "test/cljc" "test/resources"] + :main-opts + ["-m" "cognitect.test-runner" "-r" ".*-test.*" "-d" "test/clj" "test/cljc"]}} + :deps {babashka/fs {:mvn/version "0.5.24"} + babashka/process {:mvn/version "0.5.22"} + com.taoensso/tempura {:mvn/version "1.5.4"} com.yetanalytics/colossal-squuid {:mvn/version "0.1.5"} - danlentz/clj-uuid #:mvn{:version "0.2.0"} - http-kit/http-kit #:mvn{:version "2.8.0"} - lambdaisland/uri #:mvn{:version "1.19.155"} - metosin/malli #:mvn{:version "0.16.1"} - mount/mount #:mvn{:version "0.1.20"} - org.apache.logging.log4j/log4j-api #:mvn{:version "2.24.1"} - org.apache.logging.log4j/log4j-core #:mvn{:version "2.24.1"} - org.apache.logging.log4j/log4j-slf4j2-impl #:mvn{:version "2.24.1"} + danlentz/clj-uuid {:mvn/version "0.2.0"} + http-kit/http-kit {:mvn/version "2.8.0"} + lambdaisland/uri {:mvn/version "1.19.155"} + metosin/malli {:mvn/version "0.17.0"} + org.apache.logging.log4j/log4j-api {:mvn/version "2.24.3"} + org.apache.logging.log4j/log4j-core {:mvn/version "2.24.3"} + org.apache.logging.log4j/log4j-slf4j2-impl {:mvn/version "2.24.3"} org.clojure/tools.cli {:mvn/version "1.1.230"} - org.clojure/tools.logging #:mvn{:version "1.3.0"}} + org.clojure/tools.logging {:mvn/version "1.3.0"}} :paths ["src/cljc" "src/clj"]} diff --git a/docs/img/automaton_duck.png b/docs/img/automaton_duck.png new file mode 100644 index 0000000000000000000000000000000000000000..03661bc4a420076fd064a484f613544b111a96d7 GIT binary patch literal 46885 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 IE@|ZdKhmo(_y7O^ literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 6901151..55e2800 100644 --- a/package-lock.json +++ b/package-lock.json @@ -235,9 +235,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -249,14 +249,14 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -553,18 +553,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -819,9 +819,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -1125,9 +1125,9 @@ } }, "node_modules/shadow-cljs": { - "version": "2.28.20", - "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.28.20.tgz", - "integrity": "sha512-Q9N+aw2suSUZ6vmWhZupl0rkyjoYrnpU1WbMrNrbuUiKE6XjvT1vcBkTUrqkMJEPraV7u+H9b5d/RcKnj8nbhg==", + "version": "2.28.21", + "resolved": "https://registry.npmjs.org/shadow-cljs/-/shadow-cljs-2.28.21.tgz", + "integrity": "sha512-O5VUJkTh0bWqPBSKoWnQwEe/jfvbxHkzCA7SEx8f1Eavb7nDFcoNFDkgGjJtaAyaaSw/cmABrT2EeksnXw/25g==", "dev": true, "license": "ISC", "dependencies": { diff --git a/shadow-cljs.edn b/shadow-cljs.edn index d602572..8e3afd2 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -7,5 +7,5 @@ :output-to "tmp/ltest.js" :target :node-test}} :deps {:aliases [:cljs-deps]} - :dev-http {8290 ["tmp/browser-test"]} - :nrepl {:port 7002}} + :http {:port 9502} + :nrepl {:port 7102}} From 16a6721612896ead0e6ae26350b0671b2dbb430a Mon Sep 17 00:00:00 2001 From: caumond Date: Wed, 19 Mar 2025 10:55:25 +0100 Subject: [PATCH 2/2] clean build --- bb.edn | 16 ++++------------ build/compile.clj | 22 ---------------------- deps.edn | 6 +----- env/dev/resources/run_config.edn | 1 - shadow-cljs.edn | 1 + src/build/compile.clj | 15 --------------- 6 files changed, 6 insertions(+), 55 deletions(-) delete mode 100644 build/compile.clj delete mode 100644 env/dev/resources/run_config.edn delete mode 100644 src/build/compile.clj diff --git a/bb.edn b/bb.edn index 0645d13..db36342 100644 --- a/bb.edn +++ b/bb.edn @@ -1,13 +1,7 @@ -{:deps {com.github.hephaistox/auto-build {:git/sha "c2da9180d515aa63b8a3edf769c6821938af602e"}} +{:deps {com.github.hephaistox/auto-build {:git/sha "6e9a158ebf50ed9d0291f05c767b056c24508ca5"}} :paths ["src"] :tasks - {-uberjar {:doc "Uberjar" - :override-builtin true - :requires [[auto-build.tasks.uberjar :as build-uberjar] - [auto-build.echo :refer [level1-header]]] - :task (-> (build-uberjar/uberjar level1-header "." "target/uberjar" "") - exit)} - :requires [[auto-build.os.exit-codes] [auto-build.os.exiting :refer [exit]]] + {:requires [[auto-build.os.exit-codes] [auto-build.os.exiting :refer [exit]]] bp {:doc "Before push" :task (binding [exit (fn [exit-code & _] (when-not (zero? exit-code) exit-code))] (-> (or (run 'format) @@ -66,7 +60,6 @@ gha {:doc "For github action tests" :task (do (shell "bb clj-test test-clj -v") (shell "bb cljs-node-test all -v"))} heph-info {:doc "Hephaistox project info" - :extra-paths ["env/dev/resources"] :requires [[auto-build.tasks.heph-info :as heph-info] [auto-build.echo :refer [level1-header]]] :task (-> (heph-info/heph-info level1-header (current-task) ".") @@ -78,6 +71,5 @@ repl {:doc "Clojure repl" :override-builtin true :requires [[auto-build.tasks.repl :as build-repl] [auto-build.echo :refer [level1-header]]] - :task - (-> (build-repl/repl level1-header "." (current-task) [:build :cljs-deps :test-clj] 7002) - exit)}}} \ No newline at end of file + :task (-> (build-repl/repl level1-header "." (current-task) [:cljs-deps :test-clj] 7002) + exit)}}} \ No newline at end of file diff --git a/build/compile.clj b/build/compile.clj deleted file mode 100644 index 3042de5..0000000 --- a/build/compile.clj +++ /dev/null @@ -1,22 +0,0 @@ -(ns compile - (:require - [clojure.tools.build.api :refer [compile-clj create-basis jar]])) - -(defn compile-jar - [{:keys [target-dir] - :as _pars}] - (let [class-dir (str target-dir "/classes") - jar-file (str target-dir "/production/auto_core.jar") - basis (create-basis)] - (try (let [compile (compile-clj {:basis basis - :bindings {#'clojure.core/*assert* false - #'clojure.core/*warn-on-reflection* true} - :out :capture - :err :capture - :class-dir class-dir})] - (jar {:class-dir class-dir - :jar-file jar-file}) - {:compile-jar compile}) - (catch Exception e - {:compile-jar {:exception e} - :status :compilation-failed})))) diff --git a/deps.edn b/deps.edn index 1a1425b..f1c56f6 100644 --- a/deps.edn +++ b/deps.edn @@ -1,16 +1,12 @@ {:aliases {:antq {:deps {com.github.liquidz/antq {:mvn/version "2.11.1276"} org.slf4j/slf4j-nop {:mvn/version "2.0.17"}} :main-opts ["-m" "antq.core"]} - :build {:extra-deps {io.github.clojure/tools.build - {:git/sha "65b3c45a72b6862783664c436817ad0610372398"}} - :extra-paths ["build"]} :clj-test-runner {:exec-fn cognitect.test-runner.api/test :extra-deps {com.cognitect/test-runner {:git/url "https://github.com/cognitect-labs/test-runner" :sha "3f288f1f16d167723ad87cc35b1dfee3c1681e10"}}} :cljs-deps {:extra-deps {thheller/shadow-cljs {:mvn/version "2.28.21"}} - :extra-paths - ["src/cljc" "env/dev/resources" "test/cljc" "test/cljs" "test/resources"]} + :extra-paths ["src/cljc" "test/cljc" "test/cljs" "test/resources"]} :codox {:exec-args {:description "`auto-core` is about core technical functionalities" :doc-paths ["docs/codox"] diff --git a/env/dev/resources/run_config.edn b/env/dev/resources/run_config.edn deleted file mode 100644 index 409d611..0000000 --- a/env/dev/resources/run_config.edn +++ /dev/null @@ -1 +0,0 @@ -{:app-name "auto-core"} diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 8e3afd2..804267f 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -7,5 +7,6 @@ :output-to "tmp/ltest.js" :target :node-test}} :deps {:aliases [:cljs-deps]} + :dev-http {9602 ["tmp/browser-test"]} :http {:port 9502} :nrepl {:port 7102}} diff --git a/src/build/compile.clj b/src/build/compile.clj deleted file mode 100644 index c7b6921..0000000 --- a/src/build/compile.clj +++ /dev/null @@ -1,15 +0,0 @@ -(ns compile - (:require - [clojure.tools.build.api :refer [compile-clj create-basis jar]])) - -(defn compile-jar - [{:keys [] - :as _args}] - (let [class-dir "target/classes" - basis (create-basis)] - (compile-clj {:basis basis - :bindings {#'clojure.core/*assert* false - #'clojure.core/*warn-on-reflection* true} - :class-dir class-dir}) - (jar {:class-dir class-dir - :jar-file "target/production/auto_core.jar"})))