55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# This is a hack to isolate vendor check in a
|
|
# separate clean state. Without this, validate-vendor.sh
|
|
# doesn't like our workflow with patches.
|
|
#
|
|
# How it works:
|
|
# 1) Stashes all changes and checks out to a temporary branch.
|
|
# 2) Reverts all patches and commits changes.
|
|
# 3) Runs "dep ensure" and validate-vendor.sh. Saves exit code and message.
|
|
# 4) Commits any changes.
|
|
# 5) Goes back to previous branch and removes the temporary branch.
|
|
# 6) Applies stashed changes.
|
|
# 7) Prints the message and exits with the exit code.
|
|
|
|
timestamp() {
|
|
date +"%s"
|
|
}
|
|
|
|
tempBranchName="isolated-vendor-check-$(timestamp)"
|
|
|
|
# Stash current changes first, apply later before exiting.
|
|
hasChanges=0
|
|
changes=($(git status --porcelain))
|
|
if [ "$changes" ]; then
|
|
git stash
|
|
hasChanges=1
|
|
fi
|
|
|
|
branchName="$(git rev-parse --abbrev-ref HEAD)"
|
|
|
|
git checkout -b $tempBranchName
|
|
|
|
# Revert all patches.
|
|
$(pwd)/_assets/patches/patcher -r
|
|
git add .
|
|
git commit -m "vendor check - auto"
|
|
|
|
# Do vendor check.
|
|
dep ensure
|
|
msg=$("$(pwd)/_assets/ci/validate-vendor.sh")
|
|
failed=$?
|
|
git add .
|
|
git commit -m "vendor check - auto"
|
|
|
|
# Go back to previous branch, clean and apply stashed.
|
|
git checkout "$branchName"
|
|
git branch -D $tempBranchName
|
|
if [ $hasChanges -eq 1 ]; then
|
|
git stash apply > /dev/null 2>&1
|
|
fi
|
|
|
|
echo $msg
|
|
exit $failed
|