@@ -77,6 +77,10 @@ shopt -u nocasematch
7777# other lines: converted to bullets
7878# empty lines ignored
7979# 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+
8084relNotesRaw=` git show -s --format=%b $varTagName `
8185readarray -t msgArray <<< " $relNotesRaw"
8286
@@ -93,12 +97,19 @@ if [ $arrLen > 3 ]; then
9397if [ " ${oneLine: 0: 2} " == " * " ]; then oneLine=$( echo ${oneLine/ \* / -} ) ; fi
9498if [ " ${oneLine: 0: 2} " != " - " ]; then releaseNotes+=" - " ; fi
9599releaseNotes+=" $oneLine \\ n"
100+
101+ # debug output
102+ echo " ${oneLine} "
96103fi
97104fi
98105let ind=$ind +1
99106done
107+ echo " <tag's message end>"
100108else
101109releaseNotes=" #### Release of $varTagName \\ n"
110+
111+ # debug output
112+ echo " Release of $varTagName "
102113fi
103114
104115# - list of commits (commits.txt must exit in the output dir)
@@ -107,11 +118,18 @@ if [ -e "$commitFile" ]; then
107118
108119releaseNotes+=" \\ n##### Commits\\ n"
109120
121+ # debug output
122+ echo
123+ echo " Commits:"
124+
110125IFS=$' \n '
111126for next in ` cat $commitFile `
112127do
113128IFS=' ' read -r commitId commitMsg <<< " $next"
114129releaseNotes+=" - [$commitId ](https://github.com/$varRepoSlug /commit/$commitId ) $commitMsg \\ n"
130+
131+ # debug output
132+ echo " - [$commitId ](https://github.com/$varRepoSlug /commit/$commitId ) $commitMsg "
115133done
116134rm -f $commitFile
117135fi
@@ -124,19 +142,32 @@ echo "Checking for possible releases of current tag $varTagName..."
124142HTTP_RESPONSE=$( curl -L --silent --write-out " HTTPSTATUS:%{http_code}" https://api.github.com/repos/$varRepoSlug /releases/tags/$varTagName ? access_token=$varAccessToken )
125143HTTP_BODY=$( echo $HTTP_RESPONSE | sed -e ' s/HTTPSTATUS\:.*//g' )
126144HTTP_STATUS=$( echo $HTTP_RESPONSE | tr -d ' \n' | sed -e ' s/.*HTTPSTATUS://' )
127-
128145echo " HTTP server response code: $HTTP_STATUS "
129146
130147# if the release exists, append/update recent files to its assets vector
131148if [ $HTTP_STATUS -eq 200 ]; then
132149releaseId=$( echo $HTTP_BODY | jq -r ' .id' )
133150echo " - $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+
134163# ... or create a new release record
135164else
136165curlData=" {\" tag_name\" : \" $varTagName \" ,\" target_commitish\" : \" master\" ,\" name\" : \" v$varTagName \" ,\" body\" : \" $releaseNotes \" ,\" draft\" : false,\" prerelease\" : $varPrerelease }"
137166# echo "DEBUG: curl --data \"${curlData}\" https://api.github.com/repos/${varRepoSlug}/releases?access_token=$varAccessToken | jq -r '.id'"
138167releaseId=$( curl --data " $curlData " https://api.github.com/repos/$varRepoSlug /releases? access_token=$varAccessToken | jq -r ' .id' )
139168echo " - new release created for $varTagName (id $releaseId )"
169+
170+ if [ $? -ne 0 ]; then echo " FAILED: $? => aborting" ; exit 1; fi
140171fi
141172
142173# Assets defined by dir contents
@@ -154,13 +185,22 @@ echo varAssets: $varAssets
154185
155186# Upload additional assets
156187if [ ! -z $varAssets ]; then
188+ echo
189+ echo " Uploading assets:"
190+ echo " -----------------"
191+
157192curlAuth=" Authorization: token $varAccessToken "
158193for filename in $( echo $varAssets | tr " ;" " \n" )
159194do
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"
160202 echo
161- echo Uploading $filename ...
162203
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 )
164204done
165205fi
166206
0 commit comments