add publishing (#3)

Lorenzo Rizzotti committed Mar 23, 2025 at 12:15 UTC 13fea9ae899cc8063d5f0591f396393a042b27f2
1 file changed +55
.github/workflows/ci.yml
+55
@@ -38,6 +38,27 @@ jobs:
38 - name: Run tests
39 run: cargo test
40
41 + - name: Check if Cargo.toml version changed
42 + id: cargo-version-check
43 + if: github.ref == 'refs/heads/master'
44 + run: |
45 + git fetch origin
46 + CURRENT_VERSION=$(grep -m 1 "version = " Cargo.toml | sed 's/version = //; s/"//g')
47 + PREVIOUS_VERSION=$(git show origin/master:Cargo.toml | grep -m 1 "version = " | sed 's/version = //; s/"//g')
48 +
49 + if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
50 + echo "version_changed=true" >> $GITHUB_OUTPUT
51 + echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
52 + else
53 + echo "version_changed=false" >> $GITHUB_OUTPUT
54 + echo "Version unchanged: $CURRENT_VERSION"
55 + fi
56 +
57 + - name: Publish to crates.io
58 + if: ${{ github.ref == 'refs/heads/master' && steps.cargo-version-check.outputs.version_changed == 'true' }}
59 + run: cargo publish --token ${CARGO_REGISTRY_TOKEN}
60 + env:
61 + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
62 bun:
63 name: Bun Checks
64 runs-on: ubuntu-latest
@@ -54,3 +75,37 @@ jobs:
75
76 - name: Run bun check
77 run: bun run check
78 +
79 + - name: Check if package.json version changed
80 + id: npm-version-check
81 + if: github.ref == 'refs/heads/master'
82 + run: |
83 + git fetch origin
84 + CURRENT_VERSION=$(grep -m 1 '"version":' package.json | sed 's/.*"version": "//; s/".*//')
85 + PREVIOUS_VERSION=$(git show origin/master:package.json | grep -m 1 '"version":' | sed 's/.*"version": "//; s/".*//')
86 +
87 + if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
88 + echo "version_changed=true" >> $GITHUB_OUTPUT
89 + echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
90 + else
91 + echo "version_changed=false" >> $GITHUB_OUTPUT
92 + echo "Version unchanged: $CURRENT_VERSION"
93 + fi
94 +
95 + - name: Setup Node.js for npm publishing
96 + if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
97 + uses: actions/setup-node@v3
98 + with:
99 + node-version: '23.x'
100 + registry-url: 'https://registry.npmjs.org'
101 +
102 + - name: Build package
103 + if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
104 + run: bun run build
105 +
106 + - name: Publish to npm
107 + if: ${{ github.ref == 'refs/heads/master' && steps.npm-version-check.outputs.version_changed == 'true' }}
108 + run: npm publish
109 + env:
110 + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
111 +