mirror of
https://github.com/servo/servo.git
synced 2025-10-03 18:19:14 +01:00
The `git commit` command wants to set both an author and a committer. The `--author` flag only sets the author, leaving git without a value for the committer, causing git to attempt to autodiscover that value. To work around it, use the `-c` git flag to temporarily set the relevant config variables for the scope of the command.
109 lines
3.3 KiB
Bash
Executable file
109 lines
3.3 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
shopt -s failglob
|
|
|
|
|
|
usage() {
|
|
printf "usage: ${0} android|linux|mac|macbrew|windows-gnu|windows-msvc\n"
|
|
}
|
|
|
|
|
|
upload() {
|
|
local nightly_filename
|
|
nightly_filename="${4}-$(basename "${2}")"
|
|
local -r nightly_upload_dir="s3://servo-builds/nightly/${1}"
|
|
local -r package_upload_path="${nightly_upload_dir}/${nightly_filename}"
|
|
s3cmd --mime-type="application/octet-stream" \
|
|
put "${2}" "${package_upload_path}"
|
|
s3cmd cp "${package_upload_path}" "${nightly_upload_dir}/servo-latest.${3}"
|
|
}
|
|
|
|
update_brew() {
|
|
echo "Updating brew formula"
|
|
|
|
local package_url sha version script_dir tmp_dir nightly_filename
|
|
|
|
nightly_filename="${2}-$(basename "${1}")"
|
|
package_url="https://download.servo.org/nightly/macbrew/${nightly_filename}"
|
|
sha="$(shasum -a 256 "${1}" | sed -e 's/ .*//')"
|
|
|
|
# This will transform a timestamp (2016-12-13T08-01-10Z for example)
|
|
# into a valid brew version number (2016.12.13).
|
|
version="$(echo "${2}" | \
|
|
sed -n 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\).*/\1.\2.\3/p')"
|
|
|
|
script_dir="${PWD}/$(dirname "${0}")"
|
|
tmp_dir="$(mktemp -d -t homebrew-servo.XXXXX)"
|
|
|
|
git -C "${tmp_dir}" clone https://github.com/servo/homebrew-servo.git .
|
|
|
|
# Not using "/" as it's used in PACKAGEURL
|
|
sed "s|PACKAGEURL|${package_url}|g
|
|
s|SHA|${sha}|g
|
|
s|VERSION|${version}|g" \
|
|
< "${script_dir}/servo-binary-formula.rb.in" \
|
|
> "${tmp_dir}/Formula/servo-bin.rb"
|
|
|
|
git -C "${tmp_dir}" add ./Formula/servo-bin.rb
|
|
git -C "${tmp_dir}" \
|
|
-c user.name="Tom Servo" \
|
|
-c user.email="servo@servo.org" \
|
|
commit \
|
|
--message="Version bump: ${version}"
|
|
|
|
git -C "${tmp_dir}" push -qf \
|
|
"https://${GITHUB_HOMEBREW_TOKEN}@github.com/servo/homebrew-servo.git" \
|
|
master >/dev/null 2>&1
|
|
|
|
rm -rf "${tmp_dir}"
|
|
}
|
|
|
|
main() {
|
|
if (( "${#}" != 1 )); then
|
|
usage >&2
|
|
return 1
|
|
fi
|
|
|
|
local platform package extension nightly_timestamp
|
|
platform="${1}"
|
|
nightly_timestamp="$(date -u +"%Y-%m-%dT%H-%M-%SZ")"
|
|
|
|
if [[ "${platform}" == "android" ]]; then
|
|
extension=apk
|
|
package=target/arm-linux-androideabi/release/*."${extension}"
|
|
elif [[ "${platform}" == "linux" ]]; then
|
|
extension=tar.gz
|
|
package=target/release/*."${extension}"
|
|
elif [[ "${platform}" == "mac" ]]; then
|
|
extension=dmg
|
|
package=target/release/*."${extension}"
|
|
elif [[ "${platform}" == "macbrew" ]]; then
|
|
extension=tar.gz
|
|
package=target/release/brew/*."${extension}"
|
|
elif [[ "${platform}" == "windows-gnu" ||
|
|
"${platform}" == "windows-msvc" ]]; then
|
|
extension=msi
|
|
package=target/release/msi/*.msi
|
|
else
|
|
usage >&2
|
|
return 1
|
|
fi
|
|
|
|
# Lack of quotes on package allows glob expansion
|
|
# Note that this is not robust in the case of embedded spaces
|
|
# TODO(aneeshusa): make this glob robust using e.g. arrays or Python
|
|
upload "${platform}" ${package} "${extension}" "${nightly_timestamp}"
|
|
|
|
if [[ "${platform}" == "macbrew" ]]; then
|
|
update_brew ${package} "${nightly_timestamp}"
|
|
fi
|
|
}
|
|
|
|
main "${@}"
|