diff --git a/github.sh b/github.sh index e93932c832afa1739737f67a99a8d7ab3423e28e..2f40d8a452ed91f4ab6efbff32dfcede79e49dc5 100755 --- a/github.sh +++ b/github.sh @@ -5,33 +5,39 @@ branch=`git rev-parse --abbrev-ref HEAD` if [[ ! "$branch" = "master" ]]; then echo ">> This script must be run under \`master\` branch" - exit -1 + exit 1 fi - -### Releasing +### Get version to release current=`grep -P "version\": \"\d+.\d+.\d+(\w*)" package.json | grep -oP "\d+.\d+.\d+(\w*)"` +if [[ "_$version" != "_" ]]; then + echo "ERROR: Unable to read 'version' in the file 'package.json'." + echo " - Make sure the file 'package.json' exists and is readable." + exit 1 +fi echo "Current version: $current" ### Get repo URL +PROJECT_NAME=cesium REPO="duniter/cesium" -REPO_URL=https://api.github.com/repos/$REPO +REPO_API_URL=https://api.github.com/repos/$REPO +REPO_PUBLIC_URL=https://github.com/$REPO ### get auth token -GITHUB_TOKEN=`cat ~/.config/duniter/.github` +GITHUB_TOKEN=`cat ~/.config/${PROJECT_NAME}/.github` if [[ "_$GITHUB_TOKEN" != "_" ]]; then GITHUT_AUTH="Authorization: token $GITHUB_TOKEN" else - echo "Unable to find github authentifcation token file: " + echo "ERROR: Unable to find github authentication token file: " echo " - You can create such a token at https://github.com/settings/tokens > 'Generate a new token'." - echo " - Then copy the token and paste it in the file '~/.config/duniter/.github' using a valid token." - exit -1 + echo " - Then copy the token and paste it in the file '~/.config/${PROJECT_NAME}/.github' using a valid token." + exit 1 fi case "$1" in del) - result=`curl -i "$REPO_URL/releases/tags/v$current"` - release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "$REPO_URL/releases/\d+"` + result=`curl -i "$REPO_API_URL/releases/tags/v$current"` + release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "$REPO_API_URL/releases/\d+"` if [[ $release_url != "" ]]; then echo "Deleting existing release..." curl -H 'Authorization: token $GITHUB_TOKEN' -XDELETE $release_url @@ -39,24 +45,28 @@ case "$1" in ;; pre|rel) - if [[ $2 != "" ]]; then + if [[ "_$2" != "_" ]]; then if [[ $1 = "pre" ]]; then prerelease="true" else prerelease="false" fi - description="$2" - result=`curl -s -H ''"$GITHUT_AUTH"'' "$REPO_URL/releases/tags/v$current"` + description=`echo $2` + if [[ "_$description" = "_" ]]; then + description="Release v$current" + fi + + result=`curl -s -H ''"$GITHUT_AUTH"'' "$REPO_API_URL/releases/tags/v$current"` release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+/releases/\d+"` - if [[ $release_url != "" ]]; then - echo "Deleting existing release..." - result=`curl -H ''"$GITHUT_AUTH"'' -XDELETE $release_url` + if [[ "_$release_url" != "_" ]]; then + echo "Deleting existing release... $release_url" + result=`curl -H ''"$GITHUT_AUTH"'' -s -XDELETE $release_url` if [[ "_$result" != "_" ]]; then error_message=`echo "$result" | grep -P "\"message\": \"[^\"]+" | grep -oP ": \"[^\"]+\""` echo "Delete existing release failed with error$error_message" - exit -1 + exit 1 fi else echo "Release not exists yet on github." @@ -65,34 +75,58 @@ case "$1" in echo "Creating new release..." echo " - tag: v$current" echo " - description: $description" - result=`curl -H ''"$GITHUT_AUTH"'' -i $REPO_URL/releases -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$description"'","draft": false,"prerelease": '"$prerelease"'}'` + result=`curl -H ''"$GITHUT_AUTH"'' -s $REPO_API_URL/releases -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$description"'","draft": false,"prerelease": '"$prerelease"'}'` #echo "DEBUG - $result" upload_url=`echo "$result" | grep -P "\"upload_url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+"` + if [[ "_$upload_url" = "_" ]]; then + echo "Failed to create new release for repo $REPO." + echo "Server response:" + echo "$result" + exit 1 + fi + ### Sending files - echo "Uploading files to $upload_url" - dirname=`pwd` - curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T $dirname/platforms/web/build/cesium-v$current-web.zip $upload_url?name=cesium-v$current-web.zip - curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T $dirname/platforms/android/build/outputs/apk/release/android-release.apk $upload_url?name=cesium-v$current-android.apk + echo "Uploading files to ${upload_url}" + dirname=$(pwd) + + ZIP_FILE="$dirname/platforms/web/build/${PROJECT_NAME}-v$current-web.zip" + if [[ -f "${ZIP_FILE}" ]]; then + result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/zip' -T "${ZIP_FILE}" "${upload_url}?name=${PROJECT_NAME}-v${current}-web.zip") + browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+") + ZIP_SHA256=$(sha256sum "${ZIP_FILE}") + echo " - ${browser_download_url} | SHA256 Checksum: ${ZIP_SHA256}" + else + echo " - ERROR: Web release (ZIP) not found! Skipping." + fi + + APK_FILE="${dirname}/platforms/android/build/outputs/apk/release/android-release.apk" + if [[ -f "${APK_FILE}" ]]; then + result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_FILE}" "${upload_url}?name=${PROJECT_NAME}-v${current}-android.apk") + browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+") + APK_SHA256=$(sha256sum "${APK_FILE}") + echo " - ${browser_download_url} | SHA256 Checksum: ${APK_SHA256}" + else + echo "- ERROR: Android release (APK) not found! Skipping." + fi - echo "Successfully uploading files" - echo " -> Release url: https://github.com/$REPO/releases/tag/v$current" + echo "-----------------------------------------" + echo "Successfully uploading files !" + echo " -> Release url: ${REPO_PUBLIC_URL}/releases/tag/v${current}" + exit 0 else echo "Wrong arguments" echo "Usage:" - echo " > ./github.sh pre|rel <release_description>" + echo " > ./github.sh del|pre|rel <release_description>" echo "With:" + echo " - del: delete existing release" echo " - pre: use for pre-release" echo " - rel: for full release" - exit -1 + exit 1 fi ;; *) echo "No task given" - exit -1 + exit 1 ;; esac - - - -