#!/bin/bash set -eux -o pipefail SCRIPT_DIR=$(cd $(dirname "$0") && pwd -P) WPT_ROOT=$SCRIPT_DIR/../.. EPOCHS=( epochs/three_hourly::3h epochs/six_hourly::6h epochs/twelve_hourly::12h epochs/daily::1d epochs/weekly::1w ) function get_epoch_branch_name () { echo ${1} | awk -F '::' '{print $1}' } function get_epoch_timeval () { echo ${1} | awk -F '::' '{print $2}' } main () { ALL_BRANCHES_NAMES="" for e in "${EPOCHS[@]}"; do EPOCH=$(get_epoch_timeval ${e}) EPOCH_BRANCH_NAME=$(get_epoch_branch_name ${e}) EPOCH_SHA=$(./wpt rev-list --epoch ${EPOCH}) if [ "${EPOCH_SHA}" = "" ]; then echo "ERROR: Empty SHA returned from ./wpt rev-list" exit 1 fi git branch "${EPOCH_BRANCH_NAME}" "${EPOCH_SHA}" # Only set epoch tag if is not already tagged from a previous run. if ! git tag --points-at "${EPOCH_SHA}" | grep "${EPOCH_BRANCH_NAME}"; then EPOCH_STAMP="$(date +%Y-%m-%d_%HH)" git tag "${EPOCH_BRANCH_NAME}/${EPOCH_STAMP}" "${EPOCH_SHA}" fi ALL_BRANCHES_NAMES="${ALL_BRANCHES_NAMES} ${EPOCH_BRANCH_NAME}" done # This is safe because `git push` will by default fail for a non-fast-forward # push, for example if the remote branch is ahead of the local branch. git push --tags ${REMOTE} ${ALL_BRANCHES_NAMES} } cd $WPT_ROOT if [ -z "$GITHUB_TOKEN" ]; then echo "GITHUB_TOKEN must be set as an environment variable" exit 1 fi REMOTE=https://x-access-token:$GITHUB_TOKEN@github.com/web-platform-tests/wpt.git main