76 lines
3.2 KiB
Bash
Executable File
76 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e # Exit immediately if a command exits with a non-zero status.
|
|
|
|
cd $(dirname $0) # Move to the directory of the script
|
|
source ./version # Source the version file to set environment variables
|
|
|
|
# Check if the charts-build-scripts binary exists in the ../bin directory
|
|
echo "Check if charts-build-scripts binary is present on the target version"
|
|
if ls ../bin/charts-build-scripts 1>/dev/null 2>/dev/null; then
|
|
CURRENT_SCRIPT_VERSION="v$(../bin/charts-build-scripts --version | awk '{print $3}')"
|
|
echo "Current version: ${CURRENT_SCRIPT_VERSION}"
|
|
echo "Expected version: ${CHARTS_BUILD_SCRIPT_VERSION}"
|
|
|
|
# If the version is "latest", fetch the latest release version
|
|
if [[ "${CHARTS_BUILD_SCRIPT_VERSION}" == "latest" ]]; then
|
|
CHARTS_BUILD_SCRIPT_VERSION=$(curl --silent "https://api.github.com/repos/rancher/charts-build-scripts/releases/latest" | jq -r '.tag_name')
|
|
echo "Resolved latest version to ${CHARTS_BUILD_SCRIPT_VERSION}"
|
|
fi
|
|
|
|
# Exit if the current version matches the expected version
|
|
if [[ "${CURRENT_SCRIPT_VERSION}" == "${CHARTS_BUILD_SCRIPT_VERSION}" ]]; then
|
|
echo "target version already present"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# If the version is "latest", fetch the latest release version
|
|
if [[ "${CHARTS_BUILD_SCRIPT_VERSION}" == "latest" ]]; then
|
|
echo "Expected the latest version!"
|
|
CHARTS_BUILD_SCRIPT_VERSION=$(curl --silent "https://api.github.com/repos/rancher/charts-build-scripts/releases/latest" | jq -r '.tag_name')
|
|
echo "Resolved latest version to ${CHARTS_BUILD_SCRIPT_VERSION}"
|
|
fi
|
|
|
|
echo "Downloading charts-build-scripts version ${CHARTS_BUILD_SCRIPTS_REPO}@${CHARTS_BUILD_SCRIPT_VERSION}"
|
|
|
|
# Remove existing bin/charts-build-scripts
|
|
echo "remove existing ../bin/charts-build-scripts"
|
|
rm -f ../bin/charts-build-scripts
|
|
cd ..
|
|
echo "Validating/Securing bin directory"
|
|
mkdir -p bin # Ensure existence (creates if missing)
|
|
chmod -R a+x bin/ # Ensure it's executable
|
|
|
|
# Extract the OS and architecture from the go version command output
|
|
OS=$(go version | cut -d' ' -f4 | cut -d'/' -f1)
|
|
ARCH=$(go version | cut -d' ' -f4 | cut -d'/' -f2)
|
|
echo "OS: $OS"
|
|
echo "ARCH: $ARCH"
|
|
|
|
# Determine the binary name based on the OS and architecture
|
|
if [[ "$OS" == "windows" ]]; then
|
|
BINARY_NAME="charts-build-scripts_${OS}_${ARCH}.exe"
|
|
else
|
|
BINARY_NAME="charts-build-scripts_${OS}_${ARCH}"
|
|
fi
|
|
echo "BINARY_NAME: $BINARY_NAME"
|
|
|
|
# Download the binary from the charts-build-scripts repository
|
|
echo "Downloading ${CHARTS_BUILD_SCRIPTS_REPO%.git}/releases/download/${CHARTS_BUILD_SCRIPT_VERSION}/${BINARY_NAME}"
|
|
curl_output=$(curl -s -L -w "%{http_code}" ${CHARTS_BUILD_SCRIPTS_REPO%.git}/releases/download/${CHARTS_BUILD_SCRIPT_VERSION}/${BINARY_NAME} --output bin/charts-build-scripts)
|
|
HTTP_CODE=$(echo "$curl_output" | tail -n 1) # Extract the HTTP code from the last line
|
|
if [[ "$HTTP_CODE" -ne 200 ]]; then
|
|
echo "Error downloading ${BINARY_NAME}, HTTP code: $HTTP_CODE"
|
|
exit 1
|
|
fi
|
|
echo "Downloaded ${BINARY_NAME} to ./bin/charts-build-scripts"
|
|
|
|
echo "Checking downloaded binary file"
|
|
file bin/charts-build-scripts
|
|
|
|
file bin/charts-build-scripts #check the file type.
|
|
echo "${BINARY_NAME} => ./bin/charts-build-scripts"
|
|
|
|
chmod +x ./bin/charts-build-scripts
|
|
./bin/charts-build-scripts --version
|