Skip to content

Commit 72ca941

Browse files
fix(entrypoint): Follow Bash best practices
- Simplify command-line construction by building up arrays rather than passing empty strings via unquoted variables. - Prefer [[ ]] to [ ] to prevent globbing and word splitting in tests. - Quote Bash variables elsewhere to prevent globbing and word splitting. - Reorder code to start with set directive, fail fast, and colocate related sections. - Use consistent style recommended by shfmt for if/then/else blocks. - Use UPPER_CASE consistently for variable names. - Use single quotes consistently for string literals. - Use curly braces to delimit variables from surrounding string literals but not in isolation.
1 parent 0005f1f commit 72ca941

File tree

1 file changed

+49
-39
lines changed

1 file changed

+49
-39
lines changed

entrypoint.sh

Lines changed: 49 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,69 @@
11
#!/bin/bash
22

3-
if [ $INPUT_DRY_RUN ]; then INPUT_DRY_RUN='--dry-run'; else INPUT_DRY_RUN=''; fi
4-
if [ $INPUT_CHANGELOG ]; then INPUT_CHANGELOG='--changelog'; else INPUT_CHANGELOG=''; fi
5-
if [ $INPUT_PRERELEASE ]; then INPUT_PRERELEASE="--prerelease $INPUT_PRERELEASE"; else INPUT_PRERELEASE=''; fi
6-
if [ "$INPUT_COMMIT" == 'false' ]; then INPUT_COMMIT='--files-only'; else INPUT_COMMIT=''; fi
7-
if [ "$INPUT_COMMITIZEN_VERSION" == 'latest' ]; then INPUT_COMMITIZEN_VERSION="commitizen"; else INPUT_COMMITIZEN_VERSION="commitizen==$INPUT_COMMITIZEN_VERSION"; fi
8-
if [ -n "$INPUT_NO_RAISE" ]; then INPUT_NO_RAISE="--no-raise $INPUT_NO_RAISE"; else INPUT_NO_RAISE=''; fi
9-
10-
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
11-
INPUT_BRANCH=${INPUT_BRANCH:-$CURRENT_BRANCH}
12-
INPUT_EXTRA_REQUIREMENTS=${INPUT_EXTRA_REQUIREMENTS:-''}
13-
REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY}
14-
# : "${INPUT_CHANGELOG:=true}" ignroed for now, let's check that it works
15-
163
set -e
174

18-
[ -z "${INPUT_GITHUB_TOKEN}" ] && {
5+
if [[ -z $INPUT_GITHUB_TOKEN ]]; then
196
echo 'Missing input "github_token: ${{ secrets.GITHUB_TOKEN }}".'
207
exit 1
21-
}
22-
23-
echo "Repository: $REPOSITORY"
24-
echo "Actor: $GITHUB_ACTOR"
25-
26-
echo "Installing requirements..."
27-
pip install "$INPUT_COMMITIZEN_VERSION" $INPUT_EXTRA_REQUIREMENTS
28-
echo "Commitizen version:"
29-
cz version
8+
fi
309

31-
echo "Configuring git user and email..."
32-
git config --local user.name "$INPUT_GIT_NAME"
33-
git config --local user.email "$INPUT_GIT_EMAIL"
10+
echo 'Configuring git user and email...'
11+
git config --local user.name "${INPUT_GIT_NAME}"
12+
git config --local user.email "${INPUT_GIT_EMAIL}"
3413
echo "Git name: $(git config --get user.name)"
3514
echo "Git email: $(git config --get user.email)"
3615

37-
echo "Running cz: $INPUT_DRY_RUN $INPUT_COMMIT $INPUT_CHANGELOG $INPUT_PRERELEASE"
38-
39-
if [ $INPUT_CHANGELOG_INCREMENT_FILENAME ]; then
40-
cz $INPUT_NO_RAISE bump --yes --changelog-to-stdout $INPUT_COMMIT $INPUT_DRY_RUN $INPUT_CHANGELOG $INPUT_PRERELEASE >$INPUT_CHANGELOG_INCREMENT_FILENAME
16+
PIP_CMD=('pip' 'install')
17+
if [[ $INPUT_COMMITIZEN_VERSION == 'latest' ]]; then
18+
PIP_ARGS+=('commitizen')
4119
else
42-
cz $INPUT_NO_RAISE bump --yes $INPUT_DRY_RUN $INPUT_COMMIT $INPUT_CHANGELOG $INPUT_PRERELEASE
20+
PIP_ARGS+=("commitizen==${INPUT_COMMITIZEN_VERSION}")
21+
fi
22+
IFS=" " read -r -a EXTRA_REQUIREMENTS <<<"$INPUT_EXTRA_REQUIREMENTS"
23+
PIP_CMD+=("${EXTRA_REQUIREMENTS[@]}")
24+
echo "${PIP_CMD[@]}"
25+
"${PIP_CMD[@]}"
26+
echo "Commitizen version: $(cz version)"
27+
28+
CZ_CMD=('cz')
29+
if [[ $INPUT_NO_RAISE ]]; then
30+
CZ_CMD+=('--no-raise' "$INPUT_NO_RAISE")
31+
fi
32+
CZ_CMD+=('bump' '--yes')
33+
if [[ $INPUT_DRY_RUN == 'true' ]]; then
34+
CZ_CMD+=('--dry-run')
35+
fi
36+
if [[ $INPUT_CHANGELOG == 'true' ]]; then
37+
CZ_CMD+=('--changelog')
38+
fi
39+
if [[ $INPUT_PRERELEASE ]]; then
40+
CZ_CMD+=('--prerelease' "$INPUT_PRERELEASE")
41+
fi
42+
if [[ $INPUT_COMMIT == 'false' ]]; then
43+
CZ_CMD+=('--files-only')
44+
fi
45+
if [[ $INPUT_CHANGELOG_INCREMENT_FILENAME ]]; then
46+
CZ_CMD+=('--changelog-to-stdout' ">$INPUT_CHANGELOG_INCREMENT_FILENAME")
4347
fi
48+
echo "${CZ_CMD[@]}"
49+
"${CZ_CMD[@]}"
4450

45-
REV=$(cz version --project)
46-
export REV
51+
REV="$(cz version --project)"
52+
echo "REVISION=${REV}" >>"$GITHUB_ENV"
53+
echo "::set-output name=version::${REV}"
4754

48-
echo "REVISION=$REV" >>$GITHUB_ENV
55+
CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
56+
INPUT_BRANCH="${INPUT_BRANCH:-$CURRENT_BRANCH}"
57+
REPOSITORY="${INPUT_REPOSITORY:-$GITHUB_REPOSITORY}"
4958

50-
echo "::set-output name=version::$REV"
59+
echo "Repository: ${REPOSITORY}"
60+
echo "Actor: ${GITHUB_ACTOR}"
5161

52-
if [ "$INPUT_PUSH" == "true" ]; then
62+
if [[ $INPUT_PUSH == 'true' ]]; then
5363
echo "Pushing to branch..."
54-
remote_repo="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${REPOSITORY}.git"
55-
git pull ${remote_repo} ${INPUT_BRANCH}
56-
git push "${remote_repo}" HEAD:${INPUT_BRANCH} --follow-tags --tags
64+
REMOTE_REPO="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${REPOSITORY}.git"
65+
git pull "$REMOTE_REPO" "$INPUT_BRANCH"
66+
git push "$REMOTE_REPO" "HEAD:${INPUT_BRANCH}" --follow-tags --tags
5767
else
5868
echo "Not pushing"
5969
fi

0 commit comments

Comments
 (0)