@@ -20,37 +20,44 @@ jobs:
2020 - uses : dtolnay/rust-toolchain@stable
2121 - uses : Swatinem/rust-cache@v2
2222
23+ - name : Set version from tag
24+ run : |
25+ VERSION="${GITHUB_REF_NAME#v}"
26+ echo "VERSION=$VERSION" >> "$GITHUB_ENV"
27+ sed -i "0,/version = \"0.0.0-dev\"/s//version = \"$VERSION\"/" hsrs-macros/Cargo.toml
28+ sed -i "0,/version = \"0.0.0-dev\"/s//version = \"$VERSION\"/" hsrs/Cargo.toml
29+ sed -i "0,/version = \"0.0.0-dev\"/s//version = \"$VERSION\"/" hsrs-codegen/Cargo.toml
30+ sed -i "s/hsrs-macros = { version = \"0.0.0-dev\"/hsrs-macros = { version = \"$VERSION\"/" hsrs/Cargo.toml
31+ cargo check --workspace
32+
2333 - name : Publish hsrs-macros
2434 run : |
25- VERSION=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[] | select(.name=="hsrs-macros") | .version')
2635 if curl -sf "https://crates.io/api/v1/crates/hsrs-macros/$VERSION" > /dev/null 2>&1; then
2736 echo "hsrs-macros@$VERSION already published, skipping"
2837 else
29- cargo publish -p hsrs-macros --token ${{ secrets.CRATES_IO_TOKEN }}
38+ cargo publish -p hsrs-macros --token ${{ secrets.CRATES_IO_TOKEN }} --allow-dirty
3039 fi
3140
3241 - name : Wait for crates.io index
3342 run : sleep 30
3443
3544 - name : Publish hsrs
3645 run : |
37- VERSION=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[] | select(.name=="hsrs") | .version')
3846 if curl -sf "https://crates.io/api/v1/crates/hsrs/$VERSION" > /dev/null 2>&1; then
3947 echo "hsrs@$VERSION already published, skipping"
4048 else
41- cargo publish -p hsrs --token ${{ secrets.CRATES_IO_TOKEN }}
49+ cargo publish -p hsrs --token ${{ secrets.CRATES_IO_TOKEN }} --allow-dirty
4250 fi
4351
4452 - name : Wait for crates.io index
4553 run : sleep 30
4654
4755 - name : Publish hsrs-codegen
4856 run : |
49- VERSION=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[] | select(.name=="hsrs-codegen") | .version')
5057 if curl -sf "https://crates.io/api/v1/crates/hsrs-codegen/$VERSION" > /dev/null 2>&1; then
5158 echo "hsrs-codegen@$VERSION already published, skipping"
5259 else
53- cargo publish -p hsrs-codegen --token ${{ secrets.CRATES_IO_TOKEN }}
60+ cargo publish -p hsrs-codegen --token ${{ secrets.CRATES_IO_TOKEN }} --allow-dirty
5461 fi
5562
5663 hackage :
6673 ghc-version : " 9.6"
6774 cabal-version : " 3.14"
6875
76+ - name : Set version from tag
77+ run : |
78+ VERSION="${GITHUB_REF_NAME#v}"
79+ CABAL_VERSION=$(echo "$VERSION" | sed 's/\./\./g; s/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1.\2.\3.0/')
80+ sed -i "s/^version: 0.0.0.0/version: $CABAL_VERSION/" hsrs.cabal
81+
6982 - name : Build sdist
7083 run : cabal sdist
7184
7285 - name : Upload to Hackage
73- run : cabal upload --publish dist-newstyle/sdist/hsrs-*.tar.gz --token ${{ secrets.HACKAGE_TOKEN }}
86+ run : |
87+ VERSION="${GITHUB_REF_NAME#v}"
88+ CABAL_VERSION=$(echo "$VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\1.\2.\3.0/')
89+ TARBALL="dist-newstyle/sdist/hsrs-${CABAL_VERSION}.tar.gz"
90+ if curl -sf "https://hackage.haskell.org/package/hsrs-${CABAL_VERSION}" > /dev/null 2>&1; then
91+ echo "hsrs@$CABAL_VERSION already published on Hackage, skipping"
92+ else
93+ cabal upload --publish "$TARBALL" --token ${{ secrets.HACKAGE_TOKEN }}
94+ fi
0 commit comments