|
1 | 1 | #!/usr/bin/env bash
|
2 | 2 | # Validate that version number is same across all expected files
|
| 3 | +# If no parameter is found, validates that the lib/package.json is consistent throughout the repo. |
| 4 | +# |
| 5 | +# Expected usage: |
| 6 | +# ./scripts/check-version-is.sh [expected_version, e.g. from branch or tag name] |
| 7 | +# Output: |
| 8 | +# ::error file=Makefile,line=5::Incorrect version line, should be setting it to [1.0.0] |
3 | 9 |
|
4 | 10 | set -euo pipefail
|
5 | 11 |
|
6 |
| -lib_version="$(cd lib && node -p "require('./package.json').version")" |
7 |
| - |
8 |
| -expected_version="${1:-$lib_version}" |
| 12 | +# Parse github.ref context parameter if provided |
| 13 | +if [[ ${1:-} =~ refs/heads/release/sdk/v(.*) ]]; then |
| 14 | + minor_version="${BASH_REMATCH[1]}" |
| 15 | + lib_version="$(cd lib && node -p "require('./package.json').version")" |
| 16 | + if [[ $lib_version != $minor_version* ]]; then |
| 17 | + echo "::error file=lib/package.json::lib version [$lib_version] does not start with expected minor version [$minor_version]" |
| 18 | + exit 1 |
| 19 | + fi |
| 20 | + expected_version="$lib_version" |
| 21 | +elif [[ ${1:-} =~ refs/tags/sdk/v(.*) ]]; then |
| 22 | + expected_version="${BASH_REMATCH[1]}" |
| 23 | +elif [[ ${1:-} =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?$ ]]; then |
| 24 | + expected_version="${1}" |
| 25 | +else |
| 26 | + lib_version="$(cd lib && node -p "require('./package.json').version")" |
| 27 | + if [[ -n ${1:-} ]]; then |
| 28 | + echo "::error::Unrecognized ref '${1}'; ignored in favor of lib/package.json's version [${lib_version}]" |
| 29 | + fi |
| 30 | + expected_version="${lib_version}" |
| 31 | +fi |
9 | 32 |
|
10 | 33 | if ! grep --fixed-strings --line-regexp --quiet "version=${expected_version}" "Makefile"; then
|
11 | 34 | if grep --quiet "^version=" "Makefile"; then
|
12 |
| - echo "::error file=Makefile,line=$(sed -n '/version/=' Makefile)::Incorrect version line, should be setting it to [${expected_version}]" |
| 35 | + echo "::error file=Makefile,line=$(sed -n '/^version/=' Makefile)::Incorrect version line, should be setting it to [${expected_version}]" |
13 | 36 | else
|
14 | 37 | echo "::error file=Makefile::Makefile missing version line [version=${expected_version}]"
|
15 | 38 | fi
|
|
18 | 41 |
|
19 | 42 | if ! grep --fixed-strings --line-regexp --quiet "export const version = '${expected_version}'; // x-release-please-version" "lib/src/version.ts"; then
|
20 | 43 | if grep --quiet "^export const version" "lib/src/version.ts"; then
|
21 |
| - echo "::error file=lib/src/version.ts,line=$(sed -n '/export const version/=' lib/src/version.ts)::Incorrect version line, should be setting it to [${expected_version}]" |
| 44 | + echo "::error file=lib/src/version.ts,line=$(sed -n '/^export const version/=' lib/src/version.ts)::Incorrect version line, should be setting it to [${expected_version}]" |
22 | 45 | else
|
23 | 46 | echo "::error file=lib/src/version.ts::Missing version line [version=${expected_version}]"
|
24 | 47 | fi
|
|
0 commit comments