diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..7d02d8e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,40 @@ +name: Release + +on: + push: + tags: + - '[0-9]*' + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Setup Java + uses: actions/setup-java@v5 + with: + java-version: '17' + distribution: 'corretto' + + - name: Install clojure tools + uses: DeLaGuardo/setup-clojure@13.6.0 + with: + cli: 1.12.5.1645 + + - name: Cache clojure dependencies + uses: actions/cache@v5 + with: + path: | + ~/.m2/repository + ~/.gitlibs + ~/.deps.clj + key: cljdeps-${{ hashFiles('deps.edn') }} + + - name: Deploy to Clojars + env: + CLOJARS_USERNAME: ${{ secrets.CLOJARS_USERNAME }} + CLOJARS_PASSWORD: ${{ secrets.CLOJARS_PASSWORD }} + run: clojure -T:build deploy :version '"${{ github.ref_name }}"' diff --git a/build.clj b/build.clj index 251a770..01a7733 100644 --- a/build.clj +++ b/build.clj @@ -2,38 +2,43 @@ (ns build (:require [clojure.tools.build.api :as build] - [clojure.string :as string] [net.lewisship.build :as b])) (def lib 'io.github.hlship/cli-tools) -(def version (-> "version.txt" - slurp - string/trim)) -(def jar-params {:project-name lib - :version version - :aliases [:pom]}) +(defn- resolve-version + "Version comes from :version, or the exact git tag on HEAD." + [{:keys [version]}] + (or version + (build/git-process {:git-args ["describe" "--tags" "--exact-match"]}) + (throw (ex-info "No version: pass :version or check out a tagged commit" {})))) + +(defn- jar-params + [params] + {:project-name lib + :version (resolve-version params) + :aliases [:pom]}) (defn clean [_params] (build/delete {:path "target"})) (defn jar - [_params] - (b/create-jar jar-params)) + [params] + (b/create-jar (jar-params params))) (defn install - [_] - (b/install-jar (jar jar-params))) + [params] + (b/install-jar (jar params))) (defn deploy - [_params] + [params] (clean nil) - (-> jar-params + (-> (jar-params params) b/create-jar (assoc :sign-artifacts? false) b/deploy-jar)) (defn codox - [_params] - (b/generate-codox jar-params)) + [params] + (b/generate-codox (jar-params params))) diff --git a/version.txt b/version.txt deleted file mode 100644 index 3eefcb9..0000000 --- a/version.txt +++ /dev/null @@ -1 +0,0 @@ -1.0.0