blob: 7c1aebe89d896ac4ce085942d84b58059bb5ed9e [file] [log] [blame]
#!/bin/bash
# Prints help text
function usage {
cat << END
Usage: $progname [--channel CHANNEL]
optional arguments:
-h, --help show this help message and exit
-c, --channel indicates the channel of the release. Can be "beta" or "stable".
END
}
# Updates manifest.json field
function set_manifest_field {
sed -i -E "s/\"$1\": \"[^\"]*\"/\"$1\": \"$2\"/" src/manifest.json
}
# Get options
opts=$(getopt -l "help,channel:" -o "hc:" -n "$progname" -- "$@")
eval set -- "$opts"
channel=stable
while true; do
case "$1" in
-h | --help ) usage; exit; ;;
-c | --channel ) channel="$2"; shift 2 ;;
* ) break ;;
esac
done
if [[ $channel != "stable" && $channel != "beta" ]]; then
echo "channel parameter value is incorrect."
usage
exit
fi
echo "Started building release..."
# This is the version name which git gives us
version=$(git describe --always --tags --dirty)
# If the version name contains a hyphen then it isn't a release
# version. This is also the case if it doesn't start with a "v".
if [[ $version == *"-"* || $version != "v"* ]]; then
# As it isn't a release version, setting version number to 0 so it
# cannot be uploaded to the Chrome Web Store
set_manifest_field "version" "0"
set_manifest_field "version_name" "$version-$channel"
else
# It is a release version, set the version fields accordingly.
set_manifest_field "version" "${version:1}"
set_manifest_field "version_name" "${version:1}-$channel"
fi
if [[ $channel == "beta" ]]; then
# Change manifest.json to label the release as beta
set_manifest_field "name" "__MSG_appNameBeta__"
fi
# Create ZIP file for upload to the Chrome Web Store
mkdir -p out
rm -rf out/twpowertools-$version-$channel.zip
zip -rq out/twpowertools-$version-$channel.zip src -x *.git*
# Revert manifest.json changes
set_manifest_field "version" "0"
set_manifest_field "version_name" "dirty"
if [[ $channel == "beta" ]]; then
set_manifest_field "name" "__MSG_appName__"
fi
echo "Done!"