summaryrefslogtreecommitdiffstats
path: root/tools/github-sync/sync-to-github.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/github-sync/sync-to-github.sh')
-rwxr-xr-xtools/github-sync/sync-to-github.sh159
1 files changed, 0 insertions, 159 deletions
diff --git a/tools/github-sync/sync-to-github.sh b/tools/github-sync/sync-to-github.sh
deleted file mode 100755
index d677649748..0000000000
--- a/tools/github-sync/sync-to-github.sh
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/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/. */
-
-# Do NOT set -x here, since that will expose a secret API token!
-set -o errexit
-set -o nounset
-set -o pipefail
-
-if [[ "$(uname)" != "Linux" ]]; then
- echo "Error: this script must be run on Linux due to readlink semantics"
- exit 1
-fi
-
-# GECKO_PATH should definitely be set
-if [[ -z "${GECKO_PATH}" ]]; then
- echo "Error: GECKO_PATH must point to a hg clone of mozilla-central"
- exit 1
-fi
-
-# Internal variables, don't fiddle with these
-MYSELF=$(readlink -f ${0})
-MYDIR=$(dirname "${MYSELF}")
-WORKDIR="${HOME}/.ghsync"
-TMPDIR="${WORKDIR}/tmp"
-
-NAME="$1"
-RELATIVE_PATH="$2"
-DOWNSTREAM_REPO="$3"
-BORS="$4"
-BRANCH="github-sync"
-
-mkdir -p "${TMPDIR}"
-
-# Bring the project clone to a known good up-to-date state
-if [[ ! -d "${WORKDIR}/${NAME}" ]]; then
- echo "Setting up ${NAME} repo..."
- git clone "https://github.com/${DOWNSTREAM_REPO}" "${WORKDIR}/${NAME}"
- pushd "${WORKDIR}/${NAME}"
- git remote add moz-gfx https://github.com/moz-gfx/${NAME}
- popd
-else
- echo "Updating ${NAME} repo..."
- pushd "${WORKDIR}/${NAME}"
- git checkout master
- git pull
- popd
-fi
-
-if [[ -n "${GITHUB_SECRET:-}" ]]; then
- echo "Obtaining github API token..."
- # Be careful, GITHUB_TOKEN is secret, so don't log it (or any variables
- # built using it).
- GITHUB_TOKEN=$(
- curl -sSfL "$TASKCLUSTER_PROXY_URL/secrets/v1/secret/${GITHUB_SECRET}" |
- ${MYDIR}/read-json.py "secret/token"
- )
- AUTH="moz-gfx:${GITHUB_TOKEN}"
- CURL_AUTH="Authorization: bearer ${GITHUB_TOKEN}"
-fi
-
-echo "Pushing base ${BRANCH} branch..."
-pushd "${WORKDIR}/${NAME}"
-git fetch moz-gfx
-git checkout -B ${BRANCH} moz-gfx/${BRANCH} || git checkout -B ${BRANCH} master
-
-if [[ -n "${GITHUB_SECRET:-}" ]]; then
- # git may emit error messages that contain the URL, so let's sanitize them
- # or we might leak the auth token to the task log.
- git push "https://${AUTH}@github.com/moz-gfx/${NAME}" \
- "${BRANCH}:${BRANCH}" 2>&1 | sed -e "s/${AUTH}/_SANITIZED_/g"
- # Re-fetch to update the remote moz-gfx/$BRANCH branch in the local repo;
- # normally the push does this but we use a fully-qualified URL for
- # pushing so it doesn't happen.
- git fetch moz-gfx
-fi
-popd
-
-# Run the converter
-echo "Running converter..."
-pushd "${GECKO_PATH}"
-"${MYDIR}/converter.py" "${WORKDIR}/${NAME}" "${RELATIVE_PATH}"
-popd
-
-# Check to see if we have changes that need pushing
-echo "Checking for new changes..."
-pushd "${WORKDIR}/${NAME}"
-PATCHCOUNT=$(git log --oneline moz-gfx/${BRANCH}..${BRANCH}| wc -l)
-if [[ ${PATCHCOUNT} -eq 0 ]]; then
- echo "No new patches found, aborting..."
- exit 0
-fi
-
-# Log the new changes, just for logging purposes
-echo "Here are the new changes:"
-git log --graph --stat moz-gfx/${BRANCH}..${BRANCH}
-
-# Collect PR numbers of PRs opened on Github and merged to m-c
-set +e
-FIXES=$(
- git log master..${BRANCH} |
- grep "\[import_pr\] From https://github.com/${DOWNSTREAM_REPO}/pull" |
- sed -e "s%.*pull/% Fixes #%" |
- uniq |
- tr '\n' ','
-)
-echo "${FIXES}"
-set -e
-
-if [[ -z "${GITHUB_SECRET:-}" ]]; then
- echo "Running in try push, exiting now"
- exit 0
-fi
-
-echo "Pushing new changes to moz-gfx..."
-# git may emit error messages that contain the URL, so let's sanitize them
-# or we might leak the auth token to the task log.
-git push "https://${AUTH}@github.com/moz-gfx/${NAME}" +${BRANCH}:${BRANCH} \
- 2>&1 | sed -e "s/${AUTH}/_SANITIZED_/g"
-
-CURL_HEADER="Accept: application/vnd.github.v3+json"
-CURL=(curl -sSfL -H "${CURL_HEADER}" -H "${CURL_AUTH}")
-# URL extracted here mostly to make servo-tidy happy with line lengths
-API_URL="https://api.github.com/repos/${DOWNSTREAM_REPO}"
-
-# Check if there's an existing PR open
-echo "Listing pre-existing pull requests..."
-"${CURL[@]}" "${API_URL}/pulls?head=moz-gfx:${BRANCH}" |
- tee "${TMPDIR}/pr.get"
-set +e
-COMMENT_URL=$(cat "${TMPDIR}/pr.get" | ${MYDIR}/read-json.py "0/comments_url")
-HAS_COMMENT_URL="${?}"
-set -e
-
-if [[ ${HAS_COMMENT_URL} -ne 0 ]]; then
- echo "Pull request not found, creating..."
- # The PR doesn't exist yet, so let's create it
- ( echo -n '{ "title": "Sync changes from mozilla-central '"${RELATIVE_PATH}"'"'
- echo -n ', "body": "'"${FIXES}"'"'
- echo -n ', "head": "moz-gfx:'"${BRANCH}"'"'
- echo -n ', "base": "master" }'
- ) > "${TMPDIR}/pr.create"
- "${CURL[@]}" -d "@${TMPDIR}/pr.create" "${API_URL}/pulls" |
- tee "${TMPDIR}/pr.response"
- COMMENT_URL=$(
- cat "${TMPDIR}/pr.response" |
- ${MYDIR}/read-json.py "comments_url"
- )
-fi
-
-# At this point COMMENTS_URL should be set, so leave a comment to tell bors
-# to merge the PR.
-echo "Posting r+ comment to ${COMMENT_URL}..."
-echo '{ "body": "'"$BORS"' r=auto" }' > "${TMPDIR}/bors_rplus"
-"${CURL[@]}" -d "@${TMPDIR}/bors_rplus" "${COMMENT_URL}"
-
-echo "All done!"