|
3 | 3 | set -o errexit |
4 | 4 | set -o pipefail |
5 | 5 |
|
6 | | -ARG="" |
7 | 6 | DIRECTORY="/tmp" |
| 7 | +JQ_DOWNLOAD_URL=${JQ_DOWNLOAD_URL:-""} |
| 8 | +KUBECTL_DOWNLOAD_URL=${KUBECTL_DOWNLOAD_URL:""} |
| 9 | +source ./common-bash-library/common/common.sh |
8 | 10 |
|
9 | | -####################################### |
10 | | -# OS / ARCH Detection |
11 | | -####################################### |
| 11 | +install_jq "latest" "${DIRECTORY}" "true" "${JQ_DOWNLOAD_URL}" "true" |
12 | 12 |
|
13 | | -if [[ $OSTYPE == 'darwin'* ]]; then |
14 | | - OS="darwin" |
15 | | - # Detect Apple Silicon vs Intel |
16 | | - mac_arch="$(sysctl -a 2>/dev/null | grep machdep.cpu.brand_string || true)" |
17 | | - if [[ "$mac_arch" == 'machdep.cpu.brand_string: Intel'* ]]; then |
18 | | - ARCH="amd64" |
19 | | - else |
20 | | - ARCH="arm64" |
21 | | - fi |
22 | | -else |
23 | | - OS="linux" |
24 | | - ARCH="amd64" |
25 | | -fi |
26 | | - |
27 | | -####################################### |
28 | | -# Download helpers |
29 | | -####################################### |
30 | | - |
31 | | -function download { |
32 | | - local binary=$1 |
33 | | - local url=$2 |
34 | | - local file=$3 |
35 | | - local tmp_dir=$4 |
36 | | - |
37 | | - echo "Downloading ${binary}..." |
38 | | - curl --retry 3 -fLsS "${url}" --output "${tmp_dir}/${file}" |
39 | | - |
40 | | -} |
41 | | - |
42 | | -####################################### |
43 | | -# Permission check |
44 | | -####################################### |
45 | | - |
46 | | -function permission_check { |
47 | | - if ! [ -w "${DIRECTORY}" ]; then |
48 | | - echo "No write permission to ${DIRECTORY}. Using sudo..." |
49 | | - ARG=sudo |
50 | | - fi |
51 | | -} |
52 | | - |
53 | | -####################################### |
54 | | -# Install to DIRECTORY |
55 | | -####################################### |
56 | | - |
57 | | -function copy_replace_binary { |
58 | | - local binary=$1 |
59 | | - local tmp_dir=$2 |
60 | | - |
61 | | - echo "Placing ${binary} into ${DIRECTORY}..." |
62 | | - permission_check |
63 | | - |
64 | | - ${ARG} rm -f "${DIRECTORY}/${binary}" |
65 | | - ${ARG} cp -r "${tmp_dir}/${binary}" "${DIRECTORY}" |
66 | | - ${ARG} chmod +x "${DIRECTORY}/${binary}" |
67 | | -} |
68 | | - |
69 | | -####################################### |
70 | | -# Cleanup |
71 | | -####################################### |
72 | | - |
73 | | -function clean { |
74 | | - local tmp_dir=$1 |
75 | | - echo "Deleting tmp dir: ${tmp_dir}" |
76 | | - rm -rf "${tmp_dir}" |
77 | | - echo "COMPLETE" |
78 | | - echo |
79 | | -} |
80 | | - |
81 | | -####################################### |
82 | | -# Install: kubectl |
83 | | -####################################### |
84 | | - |
85 | | -# renovate: datasource=github-releases depName=kubernetes/kubernetes |
86 | | -KUBECTL_VERSION=v1.34.1 |
87 | | -BINARY=kubectl |
88 | | - |
89 | | -if ! command -v kubectl >/dev/null 2>&1; then |
90 | | - echo "kubectl not found. Installing version ${KUBECTL_VERSION} locally..." |
91 | | - TMP_DIR=$(mktemp -d /tmp/${BINARY}-XXXXX) |
92 | | - |
93 | | - echo |
94 | | - echo "-- Installing ${BINARY} ${KUBECTL_VERSION}..." |
95 | | - |
96 | | - FILE_NAME="kubectl" |
97 | | - BASE_URL="${KUBECTL_DOWNLOAD_URL:-https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/${OS}/${ARCH}/${FILE_NAME}}" |
98 | | - |
99 | | - download "$BINARY" "$BASE_URL" "$FILE_NAME" "$TMP_DIR" |
100 | | - copy_replace_binary "$BINARY" "$TMP_DIR" |
101 | | - clean "$TMP_DIR" |
102 | | - |
103 | | -else |
104 | | - echo "${BINARY} ${KUBECTL_VERSION} already installed - skipping install" |
105 | | -fi |
106 | | - |
107 | | -####################################### |
108 | | -# Install: jq |
109 | | -####################################### |
110 | | - |
111 | | -JQ_OS=${OS} |
112 | | -if [[ $OSTYPE == 'darwin'* ]]; then |
113 | | - JQ_OS="macos" |
114 | | -fi |
115 | | - |
116 | | -# renovate: datasource=github-releases depName=jqlang/jq |
117 | | -JQ_VERSION=1.7.1 |
118 | | -BINARY=jq |
119 | | - |
120 | | -if ! command -v jq >/dev/null 2>&1; then |
121 | | - echo "jq not found. Installing version ${JQ_VERSION} locally..." |
122 | | - TMP_DIR=$(mktemp -d /tmp/${BINARY}-XXXXX) |
123 | | - |
124 | | - echo |
125 | | - echo "-- Installing ${BINARY} ${JQ_VERSION}..." |
126 | | - |
127 | | - FILE_NAME="jq-${JQ_OS}-${ARCH}" |
128 | | - BASE_URL="${JQ_DOWNLOAD_URL:-https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/${FILE_NAME}}" |
129 | | - |
130 | | - download "$BINARY" "$BASE_URL" "$FILE_NAME" "$TMP_DIR" |
131 | | - mv "${TMP_DIR}/${FILE_NAME}" "${TMP_DIR}/${BINARY}" |
132 | | - copy_replace_binary "$BINARY" "$TMP_DIR" |
133 | | - clean "$TMP_DIR" |
134 | | - |
135 | | -else |
136 | | - echo "${BINARY} ${JQ_VERSION} already installed - skipping install" |
137 | | -fi |
| 13 | +install_kubectl "latest" "${DIRECTORY}" "true" "${KUBECTL_DOWNLOAD_URL}" "true" |
0 commit comments