-
Notifications
You must be signed in to change notification settings - Fork 310
/
Copy pathupdate-ci.sh
executable file
·135 lines (116 loc) · 3.38 KB
/
update-ci.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env bash
# initialize variables
USER=""
TOKEN=""
OS=""
ARCH=""
MIDDLEWARE_VERSION=""
do_usage(){
cat <<EOF 1>&2
Usage: $0 --user=<GITHUB_USER> --token=<GITHUB_TOKEN> --os=<OS> --middleware-version=<VERSION> [--arch=<ARCH>]
Options:
--user - github user
--token - github token
--os - operating system
--arch - architecture (required only for os macos)
--middleware-version - set middleware version
EOF
exit 1
}
# process named arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
--user=*) USER="${1#*=}";;
--token=*) TOKEN="${1#*=}";;
--os=*) OS="${1#*=}";;
--arch=*) ARCH="${1#*=}";;
--middleware-version=*) MIDDLEWARE_VERSION="${1#*=}";;
*)
echo "Unknown argument: $1" 1>&2
do_usage
;;
esac
shift
done
# check args
if [[ -z $USER || -z $TOKEN || -z $OS || -z $MIDDLEWARE_VERSION ]]; then
do_usage
fi
REPO="anyproto/anytype-heart"
ARCHIVE_SUFFIX="tar.gz"
GITHUB="api.github.com"
if [[ "$OS" =~ ^ubuntu-.*$ ]]; then
[[ -z "$ARCH" ]] && do_usage # required for this os
OS_ARCH="linux-${ARCH}64"
FOLDER="linux-${ARCH}"
elif [[ "$OS" =~ ^macos-.*$ ]]; then
[[ -z "$ARCH" ]] && do_usage # required for this os
OS_ARCH="darwin-${ARCH}64"
FOLDER="darwin-${ARCH}"
elif [[ "$OS" =~ ^windows-.*$ ]]; then
OS_ARCH="windows-amd64"
FOLDER="dist"
ARCHIVE_SUFFIX="zip"
else
echo "Unsupported OS='$OS'" 1>&2
exit 1
fi
FILE="addon.$ARCHIVE_SUFFIX"
# debug
cat <<EOF
OS_ARCH=$OS_ARCH
FOLDER=$FOLDER
ARCHIVE_SUFFIX=$ARCHIVE_SUFFIX
FILE=$FILE
MIDDLEWARE_VERSION=$MIDDLEWARE_VERSION
EOF
if [[ $MIDDLEWARE_VERSION == "nightly" ]]; then
ASSET="js_${MIDDLEWARE_VERSION}_${OS_ARCH}.${ARCHIVE_SUFFIX}"
echo -n "Downloading file ${DOWNLOAD_ASSETS_URL}/$ASSET ..."
curl --silent --location "${DOWNLOAD_ASSETS_URL}/$ASSET" > $FILE
else
VERSION=$(curl --silent --location --user "$USER:$TOKEN" --header "Accept: application/vnd.github.v3+json" "https://$GITHUB/repos/$REPO/releases/tags/v${MIDDLEWARE_VERSION}" | jq .)
ASSET_ID=$(echo $VERSION | jq ".assets | map(select(.name | match(\"js_v[0-9]+.[0-9]+.[0-9]+(-rc[0-9]+)?_${OS_ARCH}\";\"i\")))[0].id")
if [[ "$ASSET_ID" == "" ]]; then
echo "ERROR: ASSET_ID not found in VERSION='$VERSION'" 1>&2
exit 1
fi
echo "Version: $VERSION"
echo "Found asset: $ASSET_ID"
echo -n "Downloading file $ASSET_ID ..."
curl --silent --location --header "Authorization: token $TOKEN" --header "Accept: application/octet-stream" "https://$GITHUB/repos/$REPO/releases/assets/$ASSET_ID" > $FILE
fi
# check download status
if [[ -s $FILE ]]; then
echo " Done"
else
echo -e "\nERROR: failed download asset" 1>&2
exit 1
fi
if [[ "$OS" =~ ^windows-.*$ ]]; then
echo -n "Uncompressing... "
unzip $FILE || exit 1
echo "Done"
echo "Moving... "
mv -fv grpc-server.exe "$FOLDER/anytypeHelper.exe"
else
echo -n "Uncompressing... "
tar -zxf $FILE || exit 1
echo "Done"
echo "Moving... "
rm -rf "$FOLDER"
mkdir -p "$FOLDER"
mv -fv grpc-server "$FOLDER/anytypeHelper"
fi
rm -rf dist/lib/pb
rm -rf dist/lib/pkg
rm -rf dist/lib/protos
rm -rf dist/lib/json/generated/*.json
mv -fv protobuf/* "dist/lib/"
mkdir -p dist/lib/json/generated
mv -fv json/* "dist/lib/json/generated"
rm -rf protobuf
rm -rf relations
rm -rf json
rm -rf $FILE
printf "Done\n\n"