diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml new file mode 100644 index 0000000..3c2afea --- /dev/null +++ b/.github/workflows/build-deploy.yml @@ -0,0 +1,145 @@ +name: Checks & deploy +run-name: Fmt, lint, test, build, & deploy to gh-pages +on: [push] +permissions: + contents: read + pages: write + id-token: write +jobs: + fmt: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Run formatter + run: yarn check-fmt + lint: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Run linter + run: yarn lint + test: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install npm deps + run: yarn install --frozen-lockfile + - name: Run tests + run: yarn test + build: + runs-on: ubuntu-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Install tools from asdf config + uses: ai/asdf-cache-action@v1 + - name: Cache Clojure dependencies + uses: actions/cache@v3 + with: + path: | + ~/.m2/repository + # List all files containing dependencies: + key: cljdeps-${{ hashFiles('deps.edn') }} + restore-keys: cljdeps- + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + - name: Cache yarn dependencies + uses: actions/cache@v3 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Install npm deps + run: yarn install --frozen-lockfile + - name: Build js + run: yarn build-cljs + - name: Build css + run: yarn build-stylus + - name: Upload assets + uses: actions/upload-pages-artifact@v1 + with: + name: github-pages + path: public + + deploy: + runs-on: ubuntu-latest + needs: [build, fmt, lint, test] + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v3 diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..b71589d --- /dev/null +++ b/.tool-versions @@ -0,0 +1,3 @@ +clojure 1.11.1.1257 +java openjdk-18.0.2.1 +nodejs 18.12.1 diff --git a/img/favicon.webp b/img/favicon.webp new file mode 100644 index 0000000..61205ad Binary files /dev/null and b/img/favicon.webp differ diff --git a/package.json b/package.json index 9879004..8a8ea80 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,13 @@ { "scripts": { "fmt": "clojure -M:nsorg-fix src test && clojure -M:cljfmt-fix src *.edn test", + "check-fmt": "clojure -M:nsorg-check src test && clojure -M:cljfmt-check src *.edn test", "lint": "clojure -M:lint", "test": "shadow-cljs compile test", "watch-cljs": "shadow-cljs watch app", + "build-cljs": "shadow-cljs compile app", "watch-stylus": "stylus --include-css -c -I src -I node_modules -o public/signals.css -w -m src/signals/signals.styl", + "build-stylus": "stylus --include-css -c -I src -I node_modules -o public/signals.css -m src/signals/signals.styl", "watch-test": "shadow-cljs watch test" }, "devDependencies": { diff --git a/public/index.html b/public/index.html index 7565bb3..acc4113 100644 --- a/public/index.html +++ b/public/index.html @@ -2,12 +2,13 @@
-