forked from Jigsaw-Code/outline-releases
-
Notifications
You must be signed in to change notification settings - Fork 0
/
release_manager.sh
executable file
·96 lines (84 loc) · 2.19 KB
/
release_manager.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
#!/bin/bash -eu
#
# Copyright 2018 The Outline Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Downloads the files associated with the specified GitHub release and
# prepares a commit on a new branch from which a pull request can easily
# be made.
declare -a INSTALLER_FILES=(
# macOS.
Outline-Manager.dmg
# Windows.
Outline-Manager.exe
# Linux.
Outline-Manager.AppImage
)
declare -a UPDATE_FILES=(
# macOS.
latest-mac.yml
Outline-Manager.zip
# Windows.
latest.yml
# Linux.
latest-linux.yml
)
function usage() {
cat <<-EOM
Usage: $0 <tag>
Examples:
$0 v1.1.8
EOM
exit 1
}
while getopts h? opt; do
case $opt in
*) usage ;;
esac
done
shift $((OPTIND-1))
if (( $# != 1 )); then
usage
fi
readonly TAG=$1
readonly RELEASE_BASE=https://github.com/Jigsaw-Code/outline-server/releases/download/$TAG
# Make sure we're on a clean and up to date master.
#
# Sample git status -sb -uno output (remove the leading "# "):
# ## my-feature-branch
# M manager/some-modified-file
# M manager/another-modified-file
if [[ $(git status -sb -uno | wc -l | tr -d ' ') != 1 ]]; then
echo >&2 "Please stash changes before running this script."
exit 1
fi
if ! git status -sb -uno | grep '^## master.*' > /dev/null; then
echo >&2 "Please switch to the master branch."
exit 1
fi
git pull -q
pushd manager >/dev/null
for file in ${INSTALLER_FILES[@]} ${UPDATE_FILES[@]}; do
echo $file
curl -sfLO $RELEASE_BASE/$file || (
echo "Could not download this file, are you sure this release exists?"
exit 1
)
done
for file in ${INSTALLER_FILES[@]}; do
cp $file stable/
done
git checkout -b manager-$TAG
git commit -a -m "release server manager $TAG"
git branch
git push origin manager-$TAG