Skip to content

Commit

Permalink
Polylith Update (#19)
Browse files Browse the repository at this point in the history
* Added deps.edn files for all bricks and define bricks as dependencies instead of paths for the realworld-backend project.

* Removed unneccessary library deps in the realworld-backend project + use :local/root deps in ./deps.edn.

* Use the :local/root syntax everywhere + updated all images.

* Updated :vcs and :tag-patterns.

* Changed back to use :extra-paths for bricks in deps.edn.

* Added the libraries back again to ./deps.edn

* Added org.clojure/test.check as test dependency

* Added deps.edn files for all bricks and define bricks as dependencies instead of paths for the realworld-backend project.

* Removed unneccessary library deps in the realworld-backend project + use :local/root deps in ./deps.edn.

* Use the :local/root syntax everywhere + updated all images.

* Updated :vcs and :tag-patterns.

* Changed back to use :extra-paths for bricks in deps.edn.

* Added the libraries back again to ./deps.edn

* Added org.clojure/test.check as test dependency

* Update clj-time/clj-time to 0.15.2 in development to match the version of the components

* Updated the info screenshot.

* Fix: How the api tests run

* Added Clojars repo to deps.edn

* Fixed polylith dependency version
  • Loading branch information
furkan3ayraktar committed Oct 10, 2021
1 parent 7af9fc0 commit e242541
Show file tree
Hide file tree
Showing 28 changed files with 163 additions and 139 deletions.
3 changes: 2 additions & 1 deletion .circleci/config.yml
Expand Up @@ -98,7 +98,8 @@ jobs:
- realworld-example-{{ checksum "deps.edn" }}-{{ checksum "projects/realworld-backend/deps.edn" }}
- run:
name: Run realworld backend
command: clojure -A:ring realworld-backend
command: clojure -A:ring
working_directory: projects/realworld-backend
background: true
- run:
name: Wait for backend to initialize
Expand Down
5 changes: 4 additions & 1 deletion .idea/runConfigurations/REPL.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .media/how-to/01_workspace.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/02_dev_project.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/03_components.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/04_components_added_to_development_project.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/05_base.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/06_empty_project.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/07_filled_project.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/08_workspace_info.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/how-to/09_workspace_info_after_commit.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .media/readme/02_polylith_info.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions bases/rest-api/deps.edn
@@ -0,0 +1,8 @@
{:paths ["src" "resources"]
:deps {compojure/compojure {:mvn/version "1.6.0"}
org.clojure/data.json {:mvn/version "0.2.6"}
ring/ring-json {:mvn/version "0.5.0-beta1"}
ring/ring-jetty-adapter {:mvn/version "1.6.3"}
ring-logger-timbre/ring-logger-timbre {:mvn/version "0.7.6"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
8 changes: 8 additions & 0 deletions components/article/deps.edn
@@ -0,0 +1,8 @@
{:paths ["src" "resources"]
:deps {clj-time/clj-time {:mvn/version "0.15.2"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}
slugger/slugger {:mvn/version "1.0.1"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
7 changes: 7 additions & 0 deletions components/comment/deps.edn
@@ -0,0 +1,7 @@
{:paths ["src" "resources"]
:deps {clj-time/clj-time {:mvn/version "0.15.2"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
6 changes: 6 additions & 0 deletions components/database/deps.edn
@@ -0,0 +1,6 @@
{:paths ["src" "resources"]
:deps {honeysql/honeysql {:mvn/version "0.9.2"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}
org.xerial/sqlite-jdbc {:mvn/version "3.7.2"}}
:aliases {:test {:extra-paths []
:extra-deps []}}}
4 changes: 4 additions & 0 deletions components/env/deps.edn
@@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {}
:aliases {:test {:extra-paths []
:extra-deps []}}}
File renamed without changes.
4 changes: 4 additions & 0 deletions components/log/deps.edn
@@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {com.taoensso/timbre {:mvn/version "4.10.0"}}
:aliases {:test {:extra-paths []
:extra-deps []}}}
6 changes: 6 additions & 0 deletions components/profile/deps.edn
@@ -0,0 +1,6 @@
{:paths ["src" "resources"]
:deps {honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
4 changes: 4 additions & 0 deletions components/spec/deps.edn
@@ -0,0 +1,4 @@
{:paths ["src" "resources"]
:deps {metosin/spec-tools {:mvn/version "0.6.1"}}
:aliases {:test {:extra-paths []
:extra-deps []}}}
5 changes: 5 additions & 0 deletions components/tag/deps.edn
@@ -0,0 +1,5 @@
{:paths ["src" "resources"]
:deps {honeysql/honeysql {:mvn/version "0.9.2"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
9 changes: 9 additions & 0 deletions components/user/deps.edn
@@ -0,0 +1,9 @@
{:paths ["src" "resources"]
:deps {clj-jwt/clj-jwt {:mvn/version "0.1.1"}
clj-time/clj-time {:mvn/version "0.15.2"}
crypto-password/crypto-password {:mvn/version "0.2.0"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps []}}}
141 changes: 56 additions & 85 deletions deps.edn
@@ -1,85 +1,56 @@
{:polylith {:vcs "git"
:top-namespace "clojure.realworld"
:interface-ns "interface"
:default-profile-name "default"
:compact-views #{}
:release-tag-pattern "v[0-9]*"
:stable-tag-pattern "stable-*"
:project-to-alias {"development" "dev"
"realworld-backend" "rb"}
:ns-to-lib {clj-time clj-time/clj-time
clj-jwt clj-jwt/clj-jwt
clojure org.clojure/clojure
clojure.java.jdbc org.clojure/java.jdbc
compojure compojure/compojure
crypto.password crypto-password/crypto-password
honeysql honeysql/honeysql
slugger slugger/slugger
ring.logger ring-logger-timbre/ring-logger-timbre
ring.middleware.json ring/ring-json
spec-tools metosin/spec-tools
taoensso.timbre com.taoensso/timbre}}

:aliases {:dev {:extra-paths ["development/src"

; Components
"components/article/src"
"components/article/resources"
"components/comment/src"
"components/comment/resources"
"components/database/src"
"components/database/resources"
"components/env/src"
"components/env/resources"
"components/log/src"
"components/log/resources"
"components/profile/src"
"components/profile/resources"
"components/spec/src"
"components/spec/resources"
"components/tag/src"
"components/tag/resources"
"components/user/src"
"components/user/resources"

; Bases
"bases/rest-api/src"
"bases/rest-api/resources"]

:extra-deps {clj-time/clj-time {:mvn/version "0.14.2"}
clj-jwt/clj-jwt {:mvn/version "0.1.1"}
com.taoensso/timbre {:mvn/version "4.10.0"}
compojure/compojure {:mvn/version "1.6.0"}
crypto-password/crypto-password {:mvn/version "0.2.0"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/clojure {:mvn/version "1.10.0"}
org.clojure/data.json {:mvn/version "0.2.6"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}
org.xerial/sqlite-jdbc {:mvn/version "3.7.2"}
ring-logger-timbre/ring-logger-timbre {:mvn/version "0.7.6"}
ring/ring-jetty-adapter {:mvn/version "1.6.3"}
ring/ring-json {:mvn/version "0.5.0-beta1"}
slugger/slugger {:mvn/version "1.0.1"}}}

:test {:extra-paths ["components/article/test"
"components/comment/test"
"components/profile/test"
"components/tag/test"
"components/user/test"

"bases/rest-api/test"]
:extra-deps {org.clojure/test.check {:mvn/version "0.10.0-alpha3"}}}

:poly {:main-opts ["-m" "polylith.clj.core.poly-cli.core"]
:extra-deps {polyfy/polylith
{:git/url "https://github.com/polyfy/polylith.git"
:sha "ec38a83db7597e6f6f33dfbc1e4da665807ab091"
:deps/root "projects/poly"}}}

:ring {:extra-deps {furkan3ayraktar/polylith-clj-deps-ring
{:git/url "https://github.com/furkan3ayraktar/polylith-clj-deps-ring.git"
:sha "15e5ab1cef84d574c3e49f5335a0dadb831445ce"
:deps/root "projects/core"}}

:main-opts ["-m" "polylith.clj-deps-ring.cli.main" "start"]}}}
{:mvn/repos {"central" {:url "https://repo1.maven.org/maven2/"}
"clojars" {:url "https://clojars.org/repo"}}

:aliases {:dev {:extra-paths ["development/src"

; Components
"components/article/src"
"components/article/resources"
"components/comment/src"
"components/comment/resources"
"components/database/src"
"components/database/resources"
"components/env/src"
"components/env/resources"
"components/log/src"
"components/log/resources"
"components/profile/src"
"components/profile/resources"
"components/spec/src"
"components/spec/resources"
"components/tag/src"
"components/tag/resources"
"components/user/src"
"components/user/resources"

; Bases
"bases/rest-api/src"
"bases/rest-api/resources"]

:extra-deps {clj-time/clj-time {:mvn/version "0.15.2"}
clj-jwt/clj-jwt {:mvn/version "0.1.1"}
com.taoensso/timbre {:mvn/version "4.10.0"}
compojure/compojure {:mvn/version "1.6.0"}
crypto-password/crypto-password {:mvn/version "0.2.0"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/clojure {:mvn/version "1.10.3"}
org.clojure/data.json {:mvn/version "0.2.6"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}
org.xerial/sqlite-jdbc {:mvn/version "3.7.2"}
ring-logger-timbre/ring-logger-timbre {:mvn/version "0.7.6"}
ring/ring-jetty-adapter {:mvn/version "1.6.3"}
ring/ring-json {:mvn/version "0.5.0-beta1"}
slugger/slugger {:mvn/version "1.0.1"}}}

:test {:extra-paths ["components/article/test"
"components/comment/test"
"components/profile/test"
"components/tag/test"
"components/user/test"

"bases/rest-api/test"]
:extra-deps {org.clojure/test.check {:mvn/version "0.10.0-alpha3"}}}

:poly {:main-opts ["-m" "polylith.clj.core.poly-cli.core"]
:extra-deps {polylith/clj-poly {:mvn/version "0.2.12-alpha"}}}}}
10 changes: 6 additions & 4 deletions how-to.md
Expand Up @@ -54,17 +54,19 @@ However, our components are not yet added to development project's `` deps.edn `

![components-added](.media/how-to/04_components_added_to_development_project.png)

As you can notice, we added the components' source and resource directories under the `` :dev `` alias and the test directories under the `` :test `` alias. Once you do this and load dev and test aliases, you can start working with your components.
notice that we added the components both under the `:dev` and `:test` alias. Once you do this and load dev and test aliases, you can start working with your components.

###### Create base
- `` poly create base name:rest-api ``

This command will create a base named `` rest-api `` under bases directory. Same as components, you should add the source, resource and test directories of `` rest-api `` base to the `` deps.edn `` file in the workspace root. It will look as following:
This command will create a base named `` rest-api `` under bases directory.
Same as components, you should add the base to the `deps.edn` file in the workspace root. It will look like this:

![base](.media/how-to/05_base.png)

###### Add code to components and the base
You can take the code from the [repository]() to populate the components and the base. You should also add the necessary dependencies to the `` deps.edn `` file in the workspace root.
You can take the code from the [repository]() to populate the components and the base.
You should also add the necessary dependencies to the `` deps.edn `` file in the workspace root.

Once your code is ready, you can move on to the next step to create a project.

Expand All @@ -90,7 +92,7 @@ poly info

This command will print out the information about the current workspace. You can find documentation about it in the [Polylith repository](https://github.com/polyfy/polylith). It should print an output like this:

![workspace-info](.media/how-to/08_workspace_info.png)
<img src=".media/how-to/08_workspace_info.png" width="60%">

Here the asterisk symbol points the changed components and bases since the last stable point.

Expand Down
68 changes: 22 additions & 46 deletions projects/realworld-backend/deps.edn
@@ -1,55 +1,25 @@
{:paths ["../../components/article/src"
"../../components/article/resources"
"../../components/comment/src"
"../../components/comment/resources"
"../../components/database/src"
"../../components/database/resources"
"../../components/env/src"
"../../components/env/resources"
"../../components/log/src"
"../../components/log/resources"
"../../components/profile/src"
"../../components/profile/resources"
"../../components/spec/src"
"../../components/spec/resources"
"../../components/tag/src"
"../../components/tag/resources"
"../../components/user/src"
"../../components/user/resources"

"../../bases/rest-api/resources"
"../../bases/rest-api/src"]

:ring {:init clojure.realworld.rest-api.api/init
{:ring {:init clojure.realworld.rest-api.api/init
:destroy clojure.realworld.rest-api.api/destroy
:handler clojure.realworld.rest-api.api/app
:port 6003}

:mvn/repos {"central" {:url "https://repo1.maven.org/maven2/"}
"clojars" {:url "https://clojars.org/repo"}}

:deps {clj-time/clj-time {:mvn/version "0.14.2"}
clj-jwt/clj-jwt {:mvn/version "0.1.1"}
com.taoensso/timbre {:mvn/version "4.10.0"}
compojure/compojure {:mvn/version "1.6.0"}
crypto-password/crypto-password {:mvn/version "0.2.0"}
honeysql/honeysql {:mvn/version "0.9.2"}
metosin/spec-tools {:mvn/version "0.6.1"}
org.clojure/clojure {:mvn/version "1.10.0"}
org.clojure/data.json {:mvn/version "0.2.6"}
org.clojure/java.jdbc {:mvn/version "0.7.5"}
org.xerial/sqlite-jdbc {:mvn/version "3.7.2"}
ring-logger-timbre/ring-logger-timbre {:mvn/version "0.7.6"}
ring/ring-jetty-adapter {:mvn/version "1.6.3"}
ring/ring-json {:mvn/version "0.5.0-beta1"}
slugger/slugger {:mvn/version "1.0.1"}}

:aliases {:test {:extra-paths ["../../components/article/test"
"../../components/comment/test"
"../../components/profile/test"
"../../components/tag/test"
"../../components/user/test"
"../../bases/rest-api/test"]
:deps {poly/article {:local/root "../../components/article"}
poly/comment {:local/root "../../components/comment"}
poly/database {:local/root "../../components/database"}
poly/env {:local/root "../../components/env"}
poly/log {:local/root "../../components/log"}
poly/profile {:local/root "../../components/profile"}
poly/spec {:local/root "../../components/spec"}
poly/tag {:local/root "../../components/tag"}
poly/user {:local/root "../../components/user"}
poly/rest-api {:local/root "../../bases/rest-api"}

org.clojure/clojure {:mvn/version "1.10.3"}}

:aliases {:test {:extra-paths []
:extra-deps {org.clojure/test.check {:mvn/version "0.10.0-alpha3"}}}

:aot {:extra-paths ["classes"]
Expand All @@ -58,4 +28,10 @@
:uberjar {:extra-deps {uberdeps/uberdeps {:mvn/version "0.1.10"}}
:main-opts ["-m" "uberdeps.uberjar"
"--aliases" "aot"
"--main-class" "clojure.realworld.rest_api.main"]}}}
"--main-class" "clojure.realworld.rest_api.main"]}

:ring {:extra-deps {furkan3ayraktar/polylith-clj-deps-ring {:git/url "https://github.com/furkan3ayraktar/polylith-clj-deps-ring.git"
:sha "7bb68846bb8a200a486a2886f1af95984538ec25"
:deps/root "projects/core"}}

:main-opts ["-m" "polylith.clj-deps-ring.cli.main" "start"]}}}

0 comments on commit e242541

Please sign in to comment.