Skip to content

Commit 08bc49a

Browse files
fix: Follow Bash best practices in entrypoint
- 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 c8bd9bd commit 08bc49a

File tree

1 file changed

+48
-38
lines changed

1 file changed

+48
-38
lines changed

‎entrypoint.sh‎

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,70 @@
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 branch --show-current)"
11-
INPUT_BRANCH=${INPUT_BRANCH:-$CURRENT_BRANCH}
12-
INPUT_EXTRA_REQUIREMENTS=${INPUT_EXTRA_REQUIREMENTS:-''}
13-
REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY}
14-
# : "${INPUT_CHANGELOG:=true}" ignored 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

3110
echo"Configuring Git username, email, and pull behavior..."
32-
git config --local user.name "$INPUT_GIT_NAME"
33-
git config --local user.email "$INPUT_GIT_EMAIL"
11+
git config --local user.name "${INPUT_GIT_NAME}"
12+
git config --local user.email "${INPUT_GIT_EMAIL}"
3413
git config --local pull.rebase true
3514
echo"Git name: $(git config --get user.name)"
3615
echo"Git email: $(git config --get user.email)"
3716

38-
echo"Running cz: $INPUT_DRY_RUN$INPUT_COMMIT$INPUT_CHANGELOG$INPUT_PRERELEASE"
39-
40-
if [ $INPUT_CHANGELOG_INCREMENT_FILENAME ];then
41-
cz $INPUT_NO_RAISE bump --yes --changelog-to-stdout $INPUT_COMMIT$INPUT_DRY_RUN$INPUT_CHANGELOG$INPUT_PRERELEASE>$INPUT_CHANGELOG_INCREMENT_FILENAME
17+
PIP_CMD=('pip''install')
18+
if [[ $INPUT_COMMITIZEN_VERSION=='latest' ]];then
19+
PIP_ARGS+=('commitizen')
4220
else
43-
cz $INPUT_NO_RAISE bump --yes $INPUT_DRY_RUN$INPUT_COMMIT$INPUT_CHANGELOG$INPUT_PRERELEASE
21+
PIP_ARGS+=("commitizen==${INPUT_COMMITIZEN_VERSION}")
4422
fi
23+
IFS=""read -r -a EXTRA_REQUIREMENTS <<<"$INPUT_EXTRA_REQUIREMENTS"
24+
PIP_CMD+=("${EXTRA_REQUIREMENTS[@]}")
25+
echo"${PIP_CMD[@]}"
26+
"${PIP_CMD[@]}"
27+
echo"Commitizen version: $(cz version)"
4528

46-
REV=$(cz version --project)
47-
export REV
29+
CZ_CMD=('cz')
30+
if [[ $INPUT_NO_RAISE ]];then
31+
CZ_CMD+=('--no-raise'"$INPUT_NO_RAISE")
32+
fi
33+
CZ_CMD+=('bump''--yes')
34+
if [[ $INPUT_DRY_RUN=='true' ]];then
35+
CZ_CMD+=('--dry-run')
36+
fi
37+
if [[ $INPUT_CHANGELOG=='true' ]];then
38+
CZ_CMD+=('--changelog')
39+
fi
40+
if [[ $INPUT_PRERELEASE ]];then
41+
CZ_CMD+=('--prerelease'"$INPUT_PRERELEASE")
42+
fi
43+
if [[ $INPUT_COMMIT=='false' ]];then
44+
CZ_CMD+=('--files-only')
45+
fi
46+
if [[ $INPUT_CHANGELOG_INCREMENT_FILENAME ]];then
47+
CZ_CMD+=('--changelog-to-stdout'">$INPUT_CHANGELOG_INCREMENT_FILENAME")
48+
fi
49+
echo"${CZ_CMD[@]}"
50+
"${CZ_CMD[@]}"
51+
52+
REV="$(cz version --project)"
53+
echo"REVISION=${REV}">>"$GITHUB_ENV"
54+
echo"::set-output name=version::${REV}"
4855

49-
echo"REVISION=$REV">>$GITHUB_ENV
56+
CURRENT_BRANCH="$(git branch --show-current)"
57+
INPUT_BRANCH="${INPUT_BRANCH:-$CURRENT_BRANCH}"
58+
REPOSITORY="${INPUT_REPOSITORY:-$GITHUB_REPOSITORY}"
5059

51-
echo"::set-output name=version::$REV"
60+
echo"Repository: ${REPOSITORY}"
61+
echo"Actor: ${GITHUB_ACTOR}"
5262

53-
if ["$INPUT_PUSH"=="true"];then
63+
if [[ $INPUT_PUSH=='true' ]];then
5464
echo"Pushing to branch..."
55-
remote_repo="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${REPOSITORY}.git"
56-
git pull ${remote_repo}${INPUT_BRANCH}
57-
git push "${remote_repo}"HEAD:${INPUT_BRANCH} --tags
65+
REMOTE_REPO="https://${GITHUB_ACTOR}:${INPUT_GITHUB_TOKEN}@github.com/${REPOSITORY}.git"
66+
git pull "$REMOTE_REPO""$INPUT_BRANCH"
67+
git push "$REMOTE_REPO""HEAD:${INPUT_BRANCH}" --tags
5868
else
5969
echo"Not pushing"
6070
fi

0 commit comments

Comments
(0)