You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.0 KiB
139 lines
4.0 KiB
#!/bin/bash |
|
|
|
set -e |
|
|
|
usage() { |
|
echo "Usage: $0 -v <version> -c <config file> [-n]" |
|
echo |
|
echo "version: commit-ish to check out and build" |
|
echo "config file: a path to a json config file to" |
|
echo "ship with the build. In addition, update_base_url:" |
|
echo "from this file is used to set up auto-update." |
|
echo "-n: build with no config file." |
|
echo |
|
echo "Values may also be passed as environment variables" |
|
} |
|
|
|
conffile= |
|
version= |
|
skipcfg=0 |
|
while getopts "c:v:n" opt; do |
|
case $opt in |
|
c) |
|
conffile=$OPTARG |
|
;; |
|
v) |
|
version=$OPTARG |
|
;; |
|
n) |
|
skipcfg=1 |
|
;; |
|
\?) |
|
echo "Invalid option: -$OPTARG" >&2 |
|
usage |
|
exit |
|
;; |
|
esac |
|
done |
|
|
|
if [ -z "$version" ]; then |
|
echo "No version supplied" |
|
usage |
|
exit |
|
fi |
|
|
|
if [ -z "$conffile" ] && [ "$skipcfg" = 0 ]; then |
|
echo "No config file given. Use -c to supply a config file or" |
|
echo "-n to build with no config file (and no auto update)." |
|
exit |
|
fi |
|
|
|
if [ -n "$conffile" ]; then |
|
update_base_url=`jq -r .update_base_url $conffile` |
|
|
|
if [ -z "$update_base_url" ]; then |
|
echo "No update URL supplied. Use update_base_url: null if you really" |
|
echo "want a build with no auto-update." |
|
usage |
|
exit |
|
fi |
|
# Make sure the base URL ends in a slash if it doesn't already |
|
update_base_url=`echo $update_base_url | sed -e 's#\([^\/]\)$#\1\/#'` |
|
fi |
|
|
|
if [ ! -f package.json ]; then |
|
echo "No package.json found. This script must be run from" |
|
echo "the riot-web directory." |
|
exit |
|
fi |
|
|
|
echo "Building $version using Update base URL $update_base_url" |
|
|
|
projdir=`pwd` |
|
builddir=`mktemp -d 2>/dev/null || mktemp -d -t 'buildtmp'` |
|
pushd "$builddir" |
|
|
|
git clone "$projdir" . |
|
git checkout "$version" |
|
|
|
# Figure out what version we're building |
|
vername=`jq -r .version package.json` |
|
|
|
if [ -n "$conffile" ]; then |
|
popd |
|
cp "$conffile" "$builddir/" |
|
pushd "$builddir" |
|
fi |
|
|
|
yarn install |
|
yarn build:electron |
|
|
|
popd |
|
|
|
distdir="$builddir/electron_app/dist" |
|
pubdir="$projdir/electron_app/pub" |
|
rm -r "$pubdir" || true |
|
mkdir -p "$pubdir" |
|
rm -r "$projdir/electron_app/dist" || true |
|
mkdir -p "$projdir/electron_app/dist/unsigned/" |
|
|
|
# Install packages: what the user downloads the first time, |
|
# (DMGs for mac, exe installer for windows) |
|
mkdir -p "$pubdir/install/macos" |
|
cp $distdir/*.dmg "$pubdir/install/macos/" |
|
|
|
# Windows installers go to the dist dir because they need signing |
|
mkdir -p "$pubdir/install/win32/ia32/" |
|
mkdir -p "$projdir/electron_app/dist/unsigned/ia32/" |
|
cp $distdir/squirrel-windows-ia32/*.exe "$projdir/electron_app/dist/unsigned/ia32/" |
|
|
|
mkdir -p "$pubdir/install/win32/x64/" |
|
mkdir -p "$projdir/electron_app/dist/unsigned/x64/" |
|
cp $distdir/squirrel-windows/*.exe "$projdir/electron_app/dist/unsigned/x64/" |
|
|
|
# Packages for auto-update |
|
mkdir -p "$pubdir/update/macos" |
|
cp $distdir/*-mac.zip "$pubdir/update/macos/" |
|
echo "$vername" > "$pubdir/update/macos/latest" |
|
|
|
mkdir -p "$pubdir/update/win32/ia32/" |
|
cp $distdir/squirrel-windows-ia32/*.nupkg "$pubdir/update/win32/ia32/" |
|
cp $distdir/squirrel-windows-ia32/RELEASES "$pubdir/update/win32/ia32/" |
|
|
|
mkdir -p "$pubdir/update/win32/x64/" |
|
cp $distdir/squirrel-windows/*.nupkg "$pubdir/update/win32/x64/" |
|
cp $distdir/squirrel-windows/RELEASES "$pubdir/update/win32/x64/" |
|
|
|
# Move the deb to the main project dir's dist folder |
|
# (just the 64 bit one - the 32 bit one still gets built because |
|
# it's one arch argument for all platforms and we still want 32 bit |
|
# windows, but 32 bit linux is unsupported as of electron 4 and no |
|
# longer appears to work). |
|
cp $distdir/*_amd64.deb "$projdir/electron_app/dist/" |
|
|
|
rm -rf "$builddir" |
|
|
|
echo "Unsigned Windows installers have been placed in electron_app/dist/unsigned/ - sign them," |
|
echo "or just copy them to "$pubdir/install/win32/\<arch\>/"" |
|
echo "Once you've done this, $pubdir can be hosted on your web server." |
|
echo "deb archives are in electron_app/dist/ - these should be added into your debian repository"
|
|
|