mirror of https://github.com/fluxcd/cli-utils.git
44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2021 The Kubernetes Authors.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set -o errexit -o nounset -o pipefail -o posix
|
|
|
|
PKG_PATH="github.com/fluxcd/cli-utils"
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
|
|
|
|
# Make a new temporary GOPATH directory
|
|
export GOPATH=$(mktemp -d -t cli-utils-gopath.XXXXXXXXXX)
|
|
# Clean up on exit (modcache has read-only files, so clean that first)
|
|
trap "go clean -modcache && rm '${GOPATH}/src/${PKG_PATH}' && rm -rf '${GOPATH}'" EXIT
|
|
|
|
# Make sure we can read, write, and delete
|
|
chmod a+rw "${GOPATH}"
|
|
|
|
# Use a temporary cache
|
|
export GOCACHE="${GOPATH}/cache"
|
|
|
|
# Create a symlink for the local repo in the GOPATH
|
|
mkdir -p "${GOPATH}/src/${PKG_PATH}"
|
|
rm -r "${GOPATH}/src/${PKG_PATH}"
|
|
ln -s "${REPO_ROOT}" "${GOPATH}/src/${PKG_PATH}"
|
|
|
|
# Make sure our own Go binaries are in PATH.
|
|
export PATH="${GOPATH}/bin:${PATH}"
|
|
|
|
# Set GOROOT so binaries that parse code can work properly.
|
|
export GOROOT=$(go env GOROOT)
|
|
|
|
# Unset GOBIN in case it already exists in the current session.
|
|
unset GOBIN
|
|
|
|
# enter the GOPATH before executing the command
|
|
cd "${GOPATH}/src/${PKG_PATH}"
|
|
|
|
# Run the user-provided command.
|
|
"${@}"
|
|
|
|
# exit the GOPATH before deleting it
|
|
cd "${REPO_ROOT}"
|