|
40 | 40 | - name: Install dependencies
|
41 | 41 | run: pnpm install
|
42 | 42 |
|
| 43 | + - name: Check if tag is for a pre-release |
| 44 | + id: check-prerelease |
| 45 | + run: | |
| 46 | + IFS=$' \t\n'; set -ux |
| 47 | +
|
| 48 | + # Get clean version from the tag name |
| 49 | + version="${GITHUB_REF_NAME#v}" |
| 50 | +
|
| 51 | + # Check for hyphen in the version |
| 52 | + if [[ "${version}" == *-* ]]; then |
| 53 | + : 'Tag is for a pre-release (contains hyphen)' |
| 54 | + echo 'prerelease=true' >> "${GITHUB_OUTPUT}" |
| 55 | + exit 0 |
| 56 | + fi |
| 57 | +
|
| 58 | + # Extract major, minor, patch |
| 59 | + IFS='.' read -r major minor patch <<< "${version%%-*}" |
| 60 | +
|
| 61 | + # Fallback in case parts are missing or invalid |
| 62 | + major="${major:-0}" |
| 63 | + minor="${minor:-0}" |
| 64 | + patch="${patch:-0}" |
| 65 | +
|
| 66 | + # Check if major version is less than 1 |
| 67 | + if (( major < 1 )); then |
| 68 | + : 'Tag is for a pre-release (major version < 1)' |
| 69 | + echo 'prerelease=true' >> "${GITHUB_OUTPUT}" |
| 70 | + exit 0 |
| 71 | + fi |
| 72 | +
|
| 73 | + : 'Tag is for a normal release' |
| 74 | + echo 'prerelease=false' >> "${GITHUB_OUTPUT}" |
| 75 | +
|
43 | 76 | - name: Replace GitHub-flavored Markdown alerts with standard Markdown
|
44 | 77 | run: sed -i 's/^> *\[\!\([a-zA-Z]\)\([a-zA-Z]*\)\] */> **\U\1\L\2** /g' ./*.md
|
45 | 78 | # Basically replaces:
|
|
50 | 83 | - name: Publish to npmjs.com
|
51 | 84 | env:
|
52 | 85 | NODE_AUTH_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
|
53 |
| - run: pnpm publish --provenance --access=public --no-git-checks |
| 86 | + PRERELEASE: ${{ steps.check-prerelease.outputs.prerelease }} |
| 87 | + run: | |
| 88 | + if [[ "${PRERELEASE}" == 'true' ]]; then |
| 89 | + pnpm publish --provenance --access=public --no-git-checks --tag=next |
| 90 | + else |
| 91 | + pnpm publish --provenance --access=public --no-git-checks |
| 92 | + fi |
54 | 93 |
|
55 | 94 | - name: Create a tarball for the GitHub release
|
56 | 95 | run: pnpm pack
|
|
59 | 98 | uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v2.0.9
|
60 | 99 | with:
|
61 | 100 | draft: true
|
| 101 | + prerelease: ${{ steps.check-prerelease.outputs.prerelease }} |
62 | 102 | generate_release_notes: true
|
63 | 103 | fail_on_unmatched_files: true
|
64 | 104 | files: |
|
|
0 commit comments