diff --git a/scripts/github.sh b/scripts/github.sh new file mode 100755 index 0000000000000000000000000000000000000000..415dcb796f51e4e3437199566ab2dda8f7e83a11 --- /dev/null +++ b/scripts/github.sh @@ -0,0 +1,140 @@ +#!/bin/bash + +# Get to the root project +if [[ "_" == "_${PROJECT_DIR}" ]]; then + SCRIPT_DIR=$(dirname $0) + PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd) + export PROJECT_DIR +fi; + +cd ${PROJECT_DIR} + +### Control that the script is run on `dev` branch +branch=$(git rev-parse --abbrev-ref HEAD) +if [[ ! "$branch" = "master" ]]; +then + echo ">> This script must be run under \`master\` branch" + exit 1 +fi + +### Get version to release +current=$(grep -P "version\": \"\d+.\d+.\d+(\w*)" package.json | grep -m 1 -oP "\d+.\d+.\d+(\w*)") +if [[ "_$current" == "_" ]]; then + echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)." + exit 1; +fi +echo "Current version: $current" + +### Get repo URL +PROJECT_NAME=cesium +REPO="duniter/cesium" +REPO_API_URL="https://api.github.com/repos/${REPO}" +REPO_PUBLIC_URL="https://github.com/${REPO}" + +### get auth token +GITHUB_TOKEN=$(cat ~/.config/${PROJECT_NAME}/.github) +if [[ "_$GITHUB_TOKEN" != "_" ]]; then + GITHUT_AUTH="Authorization: token $GITHUB_TOKEN" +else + 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/${PROJECT_NAME}/.github' using a valid token." + exit 1 +fi + +case "$1" in + del) + 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 + fi + ;; + + pre|rel) + if [[ "_$2" != "_" ]]; then + + if [[ $1 = "pre" ]]; then + prerelease="true" + else + prerelease="false" + fi + + 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... $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 + fi + else + echo "Release not exists yet on github." + fi + + echo "Creating new release..." + echo " - tag: v$current" + echo " - description: $description" + 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) + + ZIP_FILE="$dirname/dist/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 "-----------------------------------------" + 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 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 + fi + ;; + *) + echo "No task given" + exit 1 + ;; +esac diff --git a/www/js/config.js b/www/js/config.js index ac7a5cfd2da897a7eb28a09bfe7d75e2abcb933b..f7e02d5647183717532d4a9c165222337286760d 100644 --- a/www/js/config.js +++ b/www/js/config.js @@ -94,7 +94,7 @@ angular.module("cesium.config", []) } }, "version": "1.4.15", - "build": "2019-12-27T19:18:15.352Z", + "build": "2019-12-27T19:18:59.204Z", "newIssueUrl": "https://git.duniter.org/clients/cesium-grp/cesium/issues/new" })