Skip to content

Commit b14f82b

Browse files
pacucha42me-no-dev
authored andcommitted
Release notes formatting update (#1634)
1 parent c830511 commit b14f82b

File tree

2 files changed

+72
-31
lines changed

2 files changed

+72
-31
lines changed

Diff for: tools/build-release.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,8 @@ set -e
315315
rm -f "$releasesJson"
316316

317317
echo " previous Release: $prev_release"
318-
echo " previous (?Pre-)release: $prev_any_release"
319318
echo " previous Pre-release: $prev_pre_release"
319+
echo " previous (any)release: $prev_any_release"
320320

321321
# add generated items to JSON package-definition contents
322322
jq_arg=".packages[0].platforms[0].version = \"$ver\" | \

Diff for: tools/deploy.sh

+71-30
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
#!/bin/bash
22

3+
4+
json_escape () {
5+
printf '%s' "$1" | python -c 'import json,sys; print(json.dumps(sys.stdin.read()))'
6+
#printf '%s' "$1" | php -r 'echo json_encode(file_get_contents("php://stdin"));'
7+
}
8+
39
set -e
410

511
#Cmdline options
@@ -77,6 +83,7 @@ shopt -u nocasematch
7783
# other lines: converted to bullets
7884
# empty lines ignored
7985
# if '* ' found as a first char pair, it's converted to '- ' to keep bulleting unified
86+
echo
8087
echo Preparing release notes
8188
echo -----------------------
8289
echo "Tag's message:"
@@ -89,85 +96,124 @@ if [ $arrLen > 3 ]; then
8996
ind=3
9097
while [ $ind -lt $arrLen ]; do
9198
if [ $ind -eq 3 ]; then
92-
releaseNotes="#### ${msgArray[ind]}\\n"
99+
releaseNotes="#### ${msgArray[ind]}"
100+
releaseNotes+=$'\r\n'
93101
else
94102
oneLine="$(echo -e "${msgArray[ind]}" | sed -e 's/^[[:space:]]*//')"
95103

96104
if [ ${#oneLine} -gt 0 ]; then
97105
if [ "${oneLine:0:2}" == "* " ]; then oneLine=$(echo ${oneLine/\*/-}); fi
98106
if [ "${oneLine:0:2}" != "- " ]; then releaseNotes+="- "; fi
99-
releaseNotes+="$oneLine\\n"
107+
releaseNotes+="$oneLine"
108+
releaseNotes+=$'\r\n'
100109

101110
#debug output
102111
echo " ${oneLine}"
103112
fi
104113
fi
105114
let ind=$ind+1
106115
done
107-
echo "<tag's message end>"
108116
else
109-
releaseNotes="#### Release of $varTagName\\n"
117+
releaseNotes="#### Release of $varTagName"
118+
releaseNotes+=$'\r\n'
110119

111120
#debug output
112121
echo " Release of $varTagName"
113122
fi
114123

115124
# - list of commits (commits.txt must exit in the output dir)
116125
commitFile=$varAssetsDir/commits.txt
117-
if [ -e "$commitFile" ]; then
126+
if [ -s "$commitFile" ]; then
118127

119-
releaseNotes+="\\n##### Commits\\n"
128+
releaseNotes+=$'\r\n##### Commits\r\n'
120129

121-
#debug output
122130
echo
123131
echo "Commits:"
124132

125133
IFS=$'\n'
126134
for next in `cat $commitFile`
127135
do
128136
IFS=' ' read -r commitId commitMsg <<< "$next"
129-
releaseNotes+="- [$commitId](https://github.com/$varRepoSlug/commit/$commitId) $commitMsg\\n"
137+
commitLine="- [$commitId](https://github.com/$varRepoSlug/commit/$commitId) $commitMsg"
138+
echo " $commitLine"
130139

131-
#debug output
132-
echo " - [$commitId](https://github.com/$varRepoSlug/commit/$commitId) $commitMsg"
140+
releaseNotes+="$commitLine"
141+
releaseNotes+=$'\r\n'
133142
done
134143
rm -f $commitFile
135144
fi
136145

137-
releaseNotes=$(perl -pe 's/\r?\n/\\n/' <<< ${releaseNotes})
138-
139146
# Check possibly existing release for current tag
140-
echo "Checking for possible releases of current tag $varTagName..."
141-
# (eg build invoked by Create New Release GHUI button -> GH default release pack created immediatelly including default assests)
147+
echo
148+
echo "Processing GitHub release record for $varTagName:"
149+
echo "-------------------------------------------------"
150+
151+
echo " - check $varTagName possible existence..."
152+
153+
# (eg build invoked by Create New Release GHUI button -> GH default release pack created immediately including default assests)
142154
HTTP_RESPONSE=$(curl -L --silent --write-out "HTTPSTATUS:%{http_code}" https://api.github.com/repos/$varRepoSlug/releases/tags/$varTagName?access_token=$varAccessToken)
155+
if [ $? -ne 0 ]; then echo "FAILED: $? => aborting"; exit 1; fi
156+
143157
HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPSTATUS\:.*//g')
144158
HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
145-
echo " HTTP server response code: $HTTP_STATUS"
159+
echo " ---> GitHub server HTTP response: $HTTP_STATUS"
146160

147161
# if the release exists, append/update recent files to its assets vector
148162
if [ $HTTP_STATUS -eq 200 ]; then
149163
releaseId=$(echo $HTTP_BODY | jq -r '.id')
150164
echo " - $varTagName release found (id $releaseId)"
151165

152-
#merge release notes and overwrite pre-release flag. all other attributes remain unchanged
166+
#Merge release notes and overwrite pre-release flag. all other attributes remain unchanged:
167+
168+
# 1. take existing notes from server (added by release creator)
153169
releaseNotesGH=$(echo $HTTP_BODY | jq -r '.body')
154-
releaseNotes="$releaseNotesGH\\n$releaseNotes"
155170

156-
echo " ... updating release notes and pre-release flag"
171+
# - strip possibly trailing CR
172+
if [ "${releaseNotesGH: -1}" == $'\r' ]; then
173+
releaseNotesTemp="${releaseNotesGH:0:-1}"
174+
else
175+
releaseNotesTemp="$releaseNotesGH"
176+
fi
177+
# - add CRLF to make relnotes consistent for JSON encoding
178+
releaseNotesTemp+=$'\r\n'
179+
180+
# 2. #append generated relnotes (usually commit oneliners)
181+
releaseNotes="$releaseNotesTemp$releaseNotes"
182+
183+
# 3. JSON-encode whole string for GH API transfer
184+
releaseNotes=$(json_escape "$releaseNotes")
185+
186+
# 4. remove extra quotes returned by python (dummy but whatever)
187+
releaseNotes=${releaseNotes:1:-1}
188+
189+
#Update current GH release record
190+
echo " - updating release notes and pre-release flag:"
157191

158192
curlData="{\"body\": \"$releaseNotes\",\"prerelease\": $varPrerelease}"
159-
curl --data "$curlData" https://api.github.com/repos/$varRepoSlug/releases/$releaseId?access_token=$varAccessToken
193+
echo " <data.begin>$curlData<data.end>"
194+
echo
195+
#echo "DEBUG: curl --data \"$curlData\" https://api.github.com/repos/$varRepoSlug/releases/$releaseId?access_token=$varAccessToken"
160196

197+
curl --data "$curlData" https://api.github.com/repos/$varRepoSlug/releases/$releaseId?access_token=$varAccessToken
161198
if [ $? -ne 0 ]; then echo "FAILED: $? => aborting"; exit 1; fi
162199

200+
echo " - $varTagName release record successfully updated"
201+
163202
#... or create a new release record
164203
else
204+
releaseNotes=$(json_escape "$releaseNotes")
205+
releaseNotes=${releaseNotes:1:-1}
206+
207+
echo " - release $varTagName not found, creating a new record:"
208+
165209
curlData="{\"tag_name\": \"$varTagName\",\"target_commitish\": \"master\",\"name\": \"v$varTagName\",\"body\": \"$releaseNotes\",\"draft\": false,\"prerelease\": $varPrerelease}"
210+
echo " <data.begin>$curlData<data.end>"
211+
166212
#echo "DEBUG: curl --data \"${curlData}\" https://api.github.com/repos/${varRepoSlug}/releases?access_token=$varAccessToken | jq -r '.id'"
167213
releaseId=$(curl --data "$curlData" https://api.github.com/repos/$varRepoSlug/releases?access_token=$varAccessToken | jq -r '.id')
168-
echo " - new release created for $varTagName (id $releaseId)"
169-
170214
if [ $? -ne 0 ]; then echo "FAILED: $? => aborting"; exit 1; fi
215+
216+
echo " - $varTagName release record successfully created (id $releaseId)"
171217
fi
172218

173219
# Assets defined by dir contents
@@ -180,19 +226,19 @@ if [ ! -z $varAssetsDir ]; then
180226
done
181227
fi
182228

183-
echo
184-
echo varAssets: $varAssets
185-
186229
#Upload additional assets
187230
if [ ! -z $varAssets ]; then
188231
echo
189232
echo "Uploading assets:"
190233
echo "-----------------"
234+
echo " Files to upload:"
235+
echo " $varAssets"
236+
echo
191237

192238
curlAuth="Authorization: token $varAccessToken"
193239
for filename in $(echo $varAssets | tr ";" "\n")
194240
do
195-
echo " - ${filename}..."
241+
echo " - ${filename}:"
196242
curl -X POST -sH "$curlAuth" -H "Content-Type: application/octet-stream" --data-binary @"$filename" https://uploads.github.com/repos/$varRepoSlug/releases/$releaseId/assets?name=$(basename $filename)
197243

198244
if [ $? -ne 0 ]; then echo "FAILED: $? => aborting"; exit 1; fi
@@ -203,8 +249,3 @@ if [ ! -z $varAssets ]; then
203249

204250
done
205251
fi
206-
207-
echo
208-
echo
209-
210-

0 commit comments

Comments
 (0)