|
13 | 13 | current=`grep -P "version\": \"\d+.\d+.\d+(\w*)" package.json | grep -oP "\d+.\d+.\d+(\w*)"` |
14 | 14 | echo "Current version: $current" |
15 | 15 |
|
| 16 | +### Get repo URL |
| 17 | +REMOTE_URL=`git remote -v | grep -P "push" | grep -oP "https://github.com/[^/]+/[^/ ]+"` |
| 18 | +REPO=`echo $REMOTE_URL | sed "s/https:\/\/github.com\///g"` |
| 19 | +REPO_URL=https://api.github.com/repos/$REPO |
| 20 | + |
| 21 | +### get auth token |
| 22 | +GITHUB_TOKEN=`cat ~/.config/duniter/.github` |
| 23 | +if [[ "_$GITHUB_TOKEN" != "_" ]]; then |
| 24 | + GITHUT_AUTH="Authorization: token $GITHUB_TOKEN" |
| 25 | +else |
| 26 | + echo "Unable to find github authentifcation token file: " |
| 27 | + echo " - You can create such a token at https://github.com/settings/tokens > 'Generate a new token'." |
| 28 | + echo " - Then copy the token and paste it in the file '~/.config/duniter/.github' using a valid token." |
| 29 | + exit |
| 30 | +fi |
| 31 | + |
16 | 32 | case "$1" in |
17 | 33 | del) |
18 | | - if [[ $2 =~ ^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$ ]]; then |
19 | | - result=`curl -i 'https://api.github.com/repos/duniter/cesium/releases/tags/v'"$current"''` |
20 | | - release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://api.github.com/repos/duniter/cesium/releases/\d+"` |
21 | | - if [[ $release_url != "" ]]; then |
| 34 | + result=`curl -i "$REPO_URL/releases/tags/v$current"` |
| 35 | + release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "$REPO_URL/releases/\d+"` |
| 36 | + if [[ $release_url != "" ]]; then |
22 | 37 | echo "Deleting existing release..." |
23 | | - curl -XDELETE $release_url -u $2 |
24 | | - fi |
25 | | - else |
26 | | - echo "Wrong argument" |
27 | | - echo "Usage:" |
28 | | - echo " > ./github.sh del user:password" |
29 | | - exit |
| 38 | + curl -H 'Authorization: token $GITHUB_TOKEN' -XDELETE $release_url |
30 | 39 | fi |
31 | 40 | ;; |
32 | 41 |
|
33 | 42 | pre|rel) |
34 | | - if [[ $2 =~ ^[a-zA-Z0-9_]+:[a-zA-Z0-9_]+$ && $3 != "" ]]; then |
| 43 | + if [[ $2 != "" ]]; then |
35 | 44 |
|
36 | 45 | if [[ $1 = "pre" ]]; then |
37 | 46 | prerelease="true" |
38 | 47 | else |
39 | 48 | prerelease="false" |
40 | 49 | fi |
| 50 | + description=`echo $2` |
41 | 51 |
|
42 | | - result=`curl -i 'https://api.github.com/repos/duniter/cesium/releases/tags/v'"$current"''` |
43 | | - release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://api.github.com/repos/duniter/cesium/releases/\d+"` |
| 52 | + result=`curl -s -H ''"$GITHUT_AUTH"'' "$REPO_URL/releases/tags/v$current"` |
| 53 | + release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+/releases/\d+"` |
44 | 54 | if [[ $release_url != "" ]]; then |
45 | 55 | echo "Deleting existing release..." |
46 | | - curl -XDELETE $release_url -u $2 |
| 56 | + result=`curl -H ''"$GITHUT_AUTH"'' -XDELETE $release_url` |
| 57 | + if [[ "_$result" != "_" ]]; then |
| 58 | + error_message=`echo "$result" | grep -P "\"message\": \"[^\"]+" | grep -oP ": \"[^\"]+\""` |
| 59 | + echo "Delete existing release failed with error$error_message" |
| 60 | + exit |
| 61 | + fi |
| 62 | + else |
| 63 | + echo "Release not exists yet on github." |
47 | 64 | fi |
48 | 65 |
|
49 | 66 | echo "Creating new release..." |
50 | | - result=`curl -i https://api.github.com/repos/duniter/cesium/releases -u $2 -d '{"tag_name": "v'"$current"'","target_commitish": "master","name": "'"$current"'","body": "'"$3"'","draft": false,"prerelease": '"$prerelease"'}'` |
51 | | - upload_url=`echo "$result" | grep -P "\"upload_url\": \"[^\"]+" | grep -oP "https://[a-z0-9/.]+"` |
| 67 | + echo " - tag: v$current" |
| 68 | + echo " - description: $description" |
| 69 | + 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"'}'` |
| 70 | + upload_url=`echo "$result" | grep -P "\"upload_url\": \"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+"` |
52 | 71 |
|
53 | 72 | ### Sending files |
54 | 73 | echo "Uploading files to GitHub..." |
55 | 74 | dirname=`pwd` |
56 | | - curl -i -u $2 -H 'Content-Type: application/zip' -T $dirname/platforms/web/build/cesium-v$current-web.zip $upload_url?name=cesium-v$current-web.zip |
57 | | - curl -i -u $2 -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 |
58 | | - # curl -i -u $2 -H 'Content-Type: application/zip' -T $dirname/platforms/firefoxos/build/package.zip $upload_url?name=cesium-v$current-firefoxos.zip |
59 | | - # curl -i -u $2 -H 'Content-Type: application/x-debian-package' -T $dirname/platforms/ubuntu/native/cesium_${current}_amd64.deb $upload_url?name=cesium-v${current}-ubuntu-amd64.deb |
| 75 | + curl -i -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 |
| 76 | + curl -i -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 |
60 | 77 |
|
61 | 78 | echo "Successfully uploading files" |
62 | | - release_url=`echo "$result" | grep -P "\"url\": \"[^\"]+" | grep -oP "https://api.github.com/repos/[a-z0-9/.]+"` |
63 | | - echo " -> Release url: $release_url" |
| 79 | + echo " -> Release url: https://github.com/$REPO/releases/tag/v$current" |
64 | 80 | else |
65 | 81 | echo "Wrong arguments" |
66 | 82 | echo "Usage:" |
67 | | - echo " > ./github.sh pre|rel user:password <release_description>" |
| 83 | + echo " > ./github.sh pre|rel <release_description>" |
68 | 84 | echo "With:" |
69 | 85 | echo " - pre: use for pre-release" |
70 | 86 | echo " - rel: for full release" |
|
0 commit comments