Skip to content

Commit 04d1a4c

Browse files
Parse repo URL to create commit message (#32)
* parse org name from repo url * remove logs * add logs * push logs to stderr * use test repo for tests * log to stdout * mock cd * add -T to bats * add -T to bats * fix missing params in test calls * fix typo * try making things conditional on tests * fix commit hash * update test * remove vars * update test * fix var * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * update test * use circleci var directly * declare vars as global * remove debug logs * use correct var
1 parent b4d2c69 commit 04d1a4c

File tree

2 files changed

+36
-40
lines changed

2 files changed

+36
-40
lines changed

src/scripts/parse_commit_info.sh

Lines changed: 31 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
#! /bin/bash
22

3+
set -e
4+
5+
36
# Global variable declarations
4-
COMMIT_MESSAGE=""
5-
COMMIT_HASH=""
6-
REPO_URL=""
7-
REPO_NAME=""
8-
PR_NUMBER=""
9-
final_commit_message=""
7+
declare -g PARSE_COMMIT_COMMIT_MESSAGE=""
8+
declare -g PARSE_COMMIT_COMMIT_HASH=""
9+
declare -g PARSE_COMMIT_REPO_URL=""
10+
declare -g PARSE_COMMIT_REPO_NAME=""
11+
declare -g PARSE_COMMIT_PR_NUMBER=""
12+
declare -g final_commit_message=""
1013

1114
ExtractPRNumber() {
1215
local commit_msg="$1"
@@ -24,6 +27,8 @@ FetchCommitHash() {
2427
# Normalize the repository URL for consistent usage
2528
GetNormalizedRepoURL() {
2629
local circle_repo_url="$1"
30+
31+
2732
if [[ $circle_repo_url == https://* ]]; then
2833
# If it's already an HTTPS URL, just ensure it doesn't have the .git suffix
2934
echo "${circle_repo_url%.git}"
@@ -36,6 +41,7 @@ GetNormalizedRepoURL() {
3641

3742
ExtractGitHubOrgAndRepo() {
3843
local repo_url="$1"
44+
3945
if [[ $repo_url != *github.com* ]]; then
4046
echo "Error: Not a GitHub URL." >&2
4147
exit 1
@@ -86,53 +92,40 @@ CreateCommitLink() {
8692

8793
ParseCommitInfo() {
8894
if [ "$ORB_TEST_ENV" = "bats-core" ]; then
89-
REPOSITORY_URL="$TEST_REPO_URL"
95+
PARSE_COMMIT_REPO_URL=$(GetNormalizedRepoURL "$TEST_REPO_URL")
9096
else
91-
cd "$SOURCE_REPO_DIRECTORY" || { echo "Changing directory failed"; exit 1; }
92-
REPOSITORY_URL="$CIRCLE_REPOSITORY_URL"
97+
PARSE_COMMIT_REPO_URL=$(GetNormalizedRepoURL "$CIRCLE_REPOSITORY_URL")
9398
fi
9499

95-
# Debug logs
96-
# >&2 echo "DEBUG: REPOSITORY_URL = $REPOSITORY_URL"
97-
98-
COMMIT_MESSAGE=$(FetchCommitMessage)
99-
COMMIT_HASH=$(FetchCommitHash)
100+
PARSE_COMMIT_COMMIT_MESSAGE=$(FetchCommitMessage)
101+
PARSE_COMMIT_COMMIT_HASH=$(FetchCommitHash)
100102

101-
# Debug logs
102-
# >&2 echo "DEBUG: COMMIT_MESSAGE = $COMMIT_MESSAGE"
103-
# >&2 echo "DEBUG: COMMIT_HASH = $COMMIT_HASH"
103+
read -r ORG_NAME PARSE_COMMIT_REPO_NAME <<< "$(ExtractGitHubOrgAndRepo "$PARSE_COMMIT_REPO_URL")"
104+
PARSE_COMMIT_PR_NUMBER=$(ExtractPRNumber "$PARSE_COMMIT_COMMIT_MESSAGE")
104105

105-
REPO_URL=$(GetNormalizedRepoURL "$REPOSITORY_URL")
106-
107-
# Debug logs
108-
# >&2 echo "DEBUG: REPO_URL = $REPO_URL"
109-
110-
read -r ORG_NAME REPO_NAME <<< "$(ExtractGitHubOrgAndRepo "$REPO_URL")"
111-
PR_NUMBER=$(ExtractPRNumber "$COMMIT_MESSAGE")
112-
113-
# # Debug logs
114-
# >&2 echo "DEBUG: ORG_NAME = $ORG_NAME"
115-
# >&2 echo "DEBUG: REPO_NAME = $REPO_NAME"
116-
# >&2 echo "DEBUG: PR_NUMBER = $PR_NUMBER"
117-
118-
final_commit_message=$(ConstructCommitMessage "$ORG_NAME" "$REPO_NAME" "$COMMIT_MESSAGE" "$PR_NUMBER" "$COMMIT_HASH")
106+
final_commit_message=$(ConstructCommitMessage "$ORG_NAME" "$PARSE_COMMIT_REPO_NAME" "$PARSE_COMMIT_COMMIT_MESSAGE" "$PARSE_COMMIT_PR_NUMBER" "$PARSE_COMMIT_COMMIT_HASH")
119107

120108
echo "$final_commit_message"
121109
}
122110

123111

124112
ORB_TEST_ENV="bats-core"
125113
if [ "${0#*"$ORB_TEST_ENV"}" = "$0" ]; then
114+
115+
cd "$SOURCE_REPO_DIRECTORY" || { echo "Changing directory failed"; exit 1; }
116+
126117
final_commit_message="$(ParseCommitInfo)"
127118

128119
# Logging statements to inspect variables
129-
echo "COMMIT_MESSAGE: $COMMIT_MESSAGE"
130-
echo "COMMIT_HASH: $COMMIT_HASH"
131-
echo "REPO_URL: $REPO_URL"
132-
echo "REPO_NAME: $REPO_NAME"
133-
echo "PR_NUMBER: $PR_NUMBER"
120+
echo "CIRCLE_REPOSITORY_URL: $CIRCLE_REPOSITORY_URL"
121+
echo "SOURCE_REPO_DIRECTORY: $SOURCE_REPO_DIRECTORY"
122+
echo "PARSE_COMMIT_COMMIT_MESSAGE: $PARSE_COMMIT_COMMIT_MESSAGE"
123+
echo "PARSE_COMMIT_COMMIT_HASH: $PARSE_COMMIT_COMMIT_HASH"
124+
echo "PARSE_COMMIT_REPO_URL: $PARSE_COMMIT_REPO_URL"
125+
echo "PARSE_COMMIT_REPO_NAME: $PARSE_COMMIT_REPO_NAME"
126+
echo "PARSE_COMMIT_PR_NUMBER: $PARSE_COMMIT_PR_NUMBER"
134127
echo "final_commit_message: $final_commit_message"
135128

136-
export FINAL_COMMIT_MESSAGE=$final_commit_message
137-
echo "export FINAL_COMMIT_MESSAGE='$final_commit_message'" >> "$BASH_ENV"
129+
export FINAL_PARSE_COMMIT_COMMIT_MESSAGE=$final_commit_message
130+
echo "export FINAL_PARSE_COMMIT_COMMIT_MESSAGE='$final_commit_message'" >> "$BASH_ENV"
138131
fi

src/tests/parse_commit_info.bats

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,17 @@ source ./src/scripts/parse_commit_info.sh
115115

116116

117117
@test "ParseCommitInfo: It handles commit messages with URL-like strings" {
118+
echo "DEBUG: REPO_NAME Before - \"$REPO_NAME\"" >&2 # New Debug Line, directed to stderr
118119
export TEST_COMMIT_MESSAGE="Fix: See https://example.com/issues/42 for more info (#42)"
119120
run ParseCommitInfo
120121
FINAL_MSG=$(echo "$output" | xargs)
121-
echo "DEBUG FINAL_MSG: \"$FINAL_MSG\""
122-
echo "EXPECTED FINAL_MSG: \"orb($REPO_NAME): $COMMIT_MESSAGE_WITHOUT_PR https://github.com/$ORG_NAME/$REPO_NAME/commit/$COMMIT_HASH\""
122+
echo "DEBUG: REPO_NAME After - \"$REPO_NAME\"" >&2 # New Debug Line, directed to stderr
123+
echo "DEBUG FINAL_MSG: \"$FINAL_MSG\"" >&2
124+
echo "EXPECTED FINAL_MSG: \"orb($REPO_NAME): $COMMIT_MESSAGE_WITHOUT_PR https://github.com/$ORG_NAME/$REPO_NAME/commit/$COMMIT_HASH\"" >&2
123125
[[ $FINAL_MSG == "orb($REPO_NAME): Fix: See https://example.com/issues/42 for more info (#42) https://github.com/org-name/repo-name/pull/42" ]]
124126
}
125127

128+
126129
@test "ParseCommitInfo: It parses and constructs the final commit message with PR link" {
127130
run ParseCommitInfo
128131
FINAL_MSG=$(echo "$output" | xargs)

0 commit comments

Comments
 (0)