@@ -77,6 +77,10 @@ shopt -u nocasematch
77
77
# other lines: converted to bullets
78
78
# empty lines ignored
79
79
# if '* ' found as a first char pair, it's converted to '- ' to keep bulleting unified
80
+ echo Preparing release notes
81
+ echo -----------------------
82
+ echo " Tag's message:"
83
+
80
84
relNotesRaw=` git show -s --format=%b $varTagName `
81
85
readarray -t msgArray <<< " $relNotesRaw"
82
86
@@ -93,12 +97,19 @@ if [ $arrLen > 3 ]; then
93
97
if [ " ${oneLine: 0: 2} " == " * " ]; then oneLine=$( echo ${oneLine/ \* / -} ) ; fi
94
98
if [ " ${oneLine: 0: 2} " != " - " ]; then releaseNotes+=" - " ; fi
95
99
releaseNotes+=" $oneLine \\ n"
100
+
101
+ # debug output
102
+ echo " ${oneLine} "
96
103
fi
97
104
fi
98
105
let ind=$ind +1
99
106
done
107
+ echo " <tag's message end>"
100
108
else
101
109
releaseNotes=" #### Release of $varTagName \\ n"
110
+
111
+ # debug output
112
+ echo " Release of $varTagName "
102
113
fi
103
114
104
115
# - list of commits (commits.txt must exit in the output dir)
@@ -107,11 +118,18 @@ if [ -e "$commitFile" ]; then
107
118
108
119
releaseNotes+=" \\ n##### Commits\\ n"
109
120
121
+ # debug output
122
+ echo
123
+ echo " Commits:"
124
+
110
125
IFS=$' \n '
111
126
for next in ` cat $commitFile `
112
127
do
113
128
IFS=' ' read -r commitId commitMsg <<< " $next"
114
129
releaseNotes+=" - [$commitId ](https://github.com/$varRepoSlug /commit/$commitId ) $commitMsg \\ n"
130
+
131
+ # debug output
132
+ echo " - [$commitId ](https://github.com/$varRepoSlug /commit/$commitId ) $commitMsg "
115
133
done
116
134
rm -f $commitFile
117
135
fi
@@ -124,19 +142,32 @@ echo "Checking for possible releases of current tag $varTagName..."
124
142
HTTP_RESPONSE=$( curl -L --silent --write-out " HTTPSTATUS:%{http_code}" https://api.github.com/repos/$varRepoSlug /releases/tags/$varTagName ? access_token=$varAccessToken )
125
143
HTTP_BODY=$( echo $HTTP_RESPONSE | sed -e ' s/HTTPSTATUS\:.*//g' )
126
144
HTTP_STATUS=$( echo $HTTP_RESPONSE | tr -d ' \n' | sed -e ' s/.*HTTPSTATUS://' )
127
-
128
145
echo " HTTP server response code: $HTTP_STATUS "
129
146
130
147
# if the release exists, append/update recent files to its assets vector
131
148
if [ $HTTP_STATUS -eq 200 ]; then
132
149
releaseId=$( echo $HTTP_BODY | jq -r ' .id' )
133
150
echo " - $varTagName release found (id $releaseId )"
151
+
152
+ # merge release notes and overwrite pre-release flag. all other attributes remain unchanged
153
+ releaseNotesGH=$( echo $HTTP_BODY | jq -r ' .body' )
154
+ releaseNotes=" $releaseNotesGH \\ n$releaseNotes "
155
+
156
+ echo " ... updating release notes and pre-release flag"
157
+
158
+ curlData=" {\" body\" : \" $releaseNotes \" ,\" prerelease\" : $varPrerelease }"
159
+ curl --data " $curlData " https://api.github.com/repos/$varRepoSlug /releases/$releaseId ? access_token=$varAccessToken
160
+
161
+ if [ $? -ne 0 ]; then echo " FAILED: $? => aborting" ; exit 1; fi
162
+
134
163
# ... or create a new release record
135
164
else
136
165
curlData=" {\" tag_name\" : \" $varTagName \" ,\" target_commitish\" : \" master\" ,\" name\" : \" v$varTagName \" ,\" body\" : \" $releaseNotes \" ,\" draft\" : false,\" prerelease\" : $varPrerelease }"
137
166
# echo "DEBUG: curl --data \"${curlData}\" https://api.github.com/repos/${varRepoSlug}/releases?access_token=$varAccessToken | jq -r '.id'"
138
167
releaseId=$( curl --data " $curlData " https://api.github.com/repos/$varRepoSlug /releases? access_token=$varAccessToken | jq -r ' .id' )
139
168
echo " - new release created for $varTagName (id $releaseId )"
169
+
170
+ if [ $? -ne 0 ]; then echo " FAILED: $? => aborting" ; exit 1; fi
140
171
fi
141
172
142
173
# Assets defined by dir contents
@@ -154,13 +185,22 @@ echo varAssets: $varAssets
154
185
155
186
# Upload additional assets
156
187
if [ ! -z $varAssets ]; then
188
+ echo
189
+ echo " Uploading assets:"
190
+ echo " -----------------"
191
+
157
192
curlAuth=" Authorization: token $varAccessToken "
158
193
for filename in $( echo $varAssets | tr " ;" " \n" )
159
194
do
195
+ echo " - ${filename} ..."
196
+ 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 )
197
+
198
+ if [ $? -ne 0 ]; then echo " FAILED: $? => aborting" ; exit 1; fi
199
+
200
+ echo
201
+ echo " OK"
160
202
echo
161
- echo Uploading $filename ...
162
203
163
- 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 )
164
204
done
165
205
fi
166
206
0 commit comments