mirror of https://github.com/knative/client.git
92 lines
3.0 KiB
Bash
Executable File
92 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright 2020 The Knative Authors
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
set -e
|
|
|
|
# This script updates test-infra scripts in-repo.
|
|
# Run it to update (usually from hack/update-deps.sh) the current scripts.
|
|
# Scripts are installed to REPO_ROOT/scripts/test-infra
|
|
|
|
# The following arguments are accepted:
|
|
# --update
|
|
# Do the update
|
|
# --ref X
|
|
# Defines which ref (branch, tag, commit) of test-infra to get scripts from; defaults to master
|
|
# --first-time
|
|
# Run this script from your repo root directory to install scripts for the first time
|
|
# Will also sed -i non-vendor scripts in the current repo to point to new path
|
|
# TODO: --verify
|
|
# Verify the contents of scripts/test-infra match the contents from commit sha in scripts/test-infra/COMMIT
|
|
# One can verify manually by running the script with '--ref $(cat scripts/test-infra/COMMIT)' and ensuring no files are staged
|
|
|
|
declare -i FIRST_TIME_SETUP=0
|
|
declare -i DO_UPDATE=0
|
|
declare SCRIPTS_REF=master
|
|
|
|
while [[ $# -ne 0 ]]; do
|
|
parameter="$1"
|
|
case ${parameter} in
|
|
--ref)
|
|
shift
|
|
SCRIPTS_REF="$1"
|
|
;;
|
|
--first-time)
|
|
FIRST_TIME_SETUP=1
|
|
;;
|
|
--update)
|
|
DO_UPDATE=1
|
|
;;
|
|
*)
|
|
echo "unknown option ${parameter}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
function do_read_tree() {
|
|
mkdir -p scripts/test-infra
|
|
git read-tree --prefix=scripts/test-infra -u "test-infra/${SCRIPTS_REF}:scripts"
|
|
git show-ref -s -- "refs/remotes/test-infra/${SCRIPTS_REF}" > scripts/test-infra/COMMIT
|
|
git add scripts/test-infra/COMMIT
|
|
echo "test-infra scripts installed to scripts/test-infra from branch ${SCRIPTS_REF}"
|
|
}
|
|
|
|
function run() {
|
|
if (( FIRST_TIME_SETUP )); then
|
|
if [[ ! -d .git ]]; then
|
|
echo "I don't believe you are in a repo root; exiting"
|
|
exit 5
|
|
fi
|
|
git remote add test-infra https://github.com/knative/test-infra.git || echo "test-infra remote already set; not changing"
|
|
git fetch test-infra "${SCRIPTS_REF}"
|
|
do_read_tree
|
|
echo "Attempting to point all scripts to use this new path"
|
|
grep -RiIl vendor/knative.dev/test-infra | grep -v ^vendor | grep -v ^scripts/test-infra | xargs sed -i 's+vendor/knative.dev/test-infra/scripts+scripts/test-infra+'
|
|
elif (( DO_UPDATE )); then
|
|
pushd "$(dirname "${BASH_SOURCE[0]}")/../.."
|
|
trap popd EXIT
|
|
|
|
git remote add test-infra https://github.com/knative/test-infra.git || true
|
|
git fetch test-infra "${SCRIPTS_REF}"
|
|
git rm -fr scripts/test-infra
|
|
rm -fR scripts/test-infra
|
|
do_read_tree
|
|
fi
|
|
}
|
|
|
|
run
|