-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathpok
More file actions
executable file
·108 lines (98 loc) · 6.42 KB
/
pok
File metadata and controls
executable file
·108 lines (98 loc) · 6.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
set -e
# Resolve shim directory to find .pocket
SHIM_DIR="$(cd "$(dirname "$0")" && pwd)"
POCKET_DIR="$SHIM_DIR/.pocket"
TASK_SCOPE="."
GO_VERSION="1.26.2"
GO_INSTALL_DIR="$POCKET_DIR/tools/go/$GO_VERSION"
GO_BIN="$GO_INSTALL_DIR/go/bin/go"
# Find Go binary
if command -v go &> /dev/null; then
GO_CMD="go"
elif [[ -x "$GO_BIN" ]]; then
GO_CMD="$GO_BIN"
else
# Download Go
echo "Go not found, downloading go$GO_VERSION..."
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
[[ "$ARCH" == "x86_64" ]] && ARCH="amd64"
[[ "$ARCH" == "aarch64" || "$ARCH" == "arm64" ]] && ARCH="arm64"
# Get expected checksum for this platform
EXPECTED_SHA256=""
case "${OS}-${ARCH}" in
"aix-ppc64") EXPECTED_SHA256="e6f759fbdd5b1e3ecce3161d8bd9b9aeaf15c4112b7c101097e9d329b310d858" ;;
"darwin-amd64") EXPECTED_SHA256="bc3f1500d9968c36d705442d90ba91addf9271665033748b82532682e90a7966" ;;
"darwin-arm64") EXPECTED_SHA256="32af1522bf3e3ff3975864780a429cc0b41d190ec7bf90faa661d6d64566e7af" ;;
"dragonfly-amd64") EXPECTED_SHA256="b4f3f74412914e54140cbf8b5c76d2f8eeff3a5003310c9244c61ba8a0ecd94b" ;;
"freebsd-386") EXPECTED_SHA256="fab09ea1988aae3ae2c8186455e8956d539d04e2ee4973e8887853432d0e8039" ;;
"freebsd-amd64") EXPECTED_SHA256="f271fd829a2a6b36fa1c72cdaafb18410a106da982c93a626d4e8b0fa0f0fa21" ;;
"freebsd-arm") EXPECTED_SHA256="38713f1516cd2b0097ea05594ec1c842fe690dace8301c7d34d91b92250b4424" ;;
"freebsd-arm64") EXPECTED_SHA256="d78bb171900134efdd1d0d49e5e80cd8c8b614f0e46c508d0b6bac30fb996fdf" ;;
"illumos-amd64") EXPECTED_SHA256="e88cd85e9e253ceda4077367072aa10d2f92bc2fa6e59a811c00bbe95dc9b02d" ;;
"linux-386") EXPECTED_SHA256="89835cdc4dfebde7fe28c9c6dc080bb3753f6b0354301966ff9f62d14991bd7d" ;;
"linux-amd64") EXPECTED_SHA256="990e6b4bbba816dc3ee129eaeaf4b42f17c2800b88a2166c265ac1a200262282" ;;
"linux-arm64") EXPECTED_SHA256="c958a1fe1b361391db163a485e21f5f228142d6f8b584f6bef89b26f66dc5b23" ;;
"linux-armv6l") EXPECTED_SHA256="0000e45577827b0a8868588c543cbe4232853def1d3d7a344ad6e60ce2b015c8" ;;
"linux-loong64") EXPECTED_SHA256="4dcb87e845fe5c015c8cf6affb4636fcf1699182b70454783caed85c5dfa3267" ;;
"linux-mips") EXPECTED_SHA256="2d57e4167932a4872e31570465f48d8b6818002c77275bae969bdbb6d7238b5e" ;;
"linux-mips64") EXPECTED_SHA256="b0b49bb5c528e623a926b8242f03cfd612971150e18eeb3f638d751218c09cdf" ;;
"linux-mips64le") EXPECTED_SHA256="5ffc9da2b0ee939c8503c9d9278d6857909ca8577dae3b71221ab2821dc7826a" ;;
"linux-mipsle") EXPECTED_SHA256="ab1fe1c38ffa6bbda029dea33bf36167aca4ff3a25c9d6ed0af38da120678ddc" ;;
"linux-ppc64") EXPECTED_SHA256="589f7ef241104f153e910244b71d70f4aad0d4584651ca80a5188186dda63a2e" ;;
"linux-ppc64le") EXPECTED_SHA256="62b7645dd2404052535617c59e91cf03c7aa28e332dbaddbe4c0d7de7bcc6736" ;;
"linux-riscv64") EXPECTED_SHA256="c5c697faa4dc05364b6e163d2ab8161b32a120eeed54192457d57d7ef7c2091a" ;;
"linux-s390x") EXPECTED_SHA256="410726ed10a0ea6745c2ea8da4f0e769fd3ce819cd4a41a67ad08b094d5dfc31" ;;
"netbsd-386") EXPECTED_SHA256="e8ffab99dd65fef14097d6af48ea6302793f2298a7b2e5f00a284bd933feba4c" ;;
"netbsd-amd64") EXPECTED_SHA256="1f5c33c923983ee8433ad8098dcd87a0e1fdccd18d05a91844c2be60507a61fe" ;;
"netbsd-arm") EXPECTED_SHA256="85761320e364b65424d2952a3388970d86e072c8dce8dcad2a1dca41555c2b96" ;;
"netbsd-arm64") EXPECTED_SHA256="3ca3561bf4452e799d11e5312182f79cd342d506136cd44c2b47991206ec23f5" ;;
"openbsd-386") EXPECTED_SHA256="0644073c0ae1ade26d26953ef882d7d419855dca25b0e992ae416a47967d37b3" ;;
"openbsd-amd64") EXPECTED_SHA256="72f69217a88e3d0975a75adf9fc92ff10ea65def56e6c34d8612428bf769581e" ;;
"openbsd-arm") EXPECTED_SHA256="3aafe792df65abf1777b5cc678075ebba1bd8063e6450e81e742fef696e0bcbd" ;;
"openbsd-arm64") EXPECTED_SHA256="efd410fc60a17690ad43fe8dd00bf1fd4c1dc920d81970b9f422f313b0930b92" ;;
"openbsd-ppc64") EXPECTED_SHA256="98a2cadd416066739e00b1bc297727c3108dba9001811b177ce57afef518f8bd" ;;
"openbsd-riscv64") EXPECTED_SHA256="adf39a1a7e56d5c1a2cb69ad06752c5da6b808d2a029b7b6d6d5bb6e11a2168e" ;;
"plan9-386") EXPECTED_SHA256="eb2f95f6f43701eb98a31f5efdd9b5f14ff6e0afd289e1f94559462f83e73cfd" ;;
"plan9-amd64") EXPECTED_SHA256="d347fecec7532309fccf3570021ba8a00a0acce120fea02a46cc295936588b0f" ;;
"plan9-arm") EXPECTED_SHA256="70700c5af45201a8e82436fb824f3551e357e3002094c8416e78e1aa51d4a0ab" ;;
"solaris-amd64") EXPECTED_SHA256="cd45d13200697b3263e39cdf364f0cb9d9adc39d9574ab575e481b64cb7fb8b1" ;;
"windows-386") EXPECTED_SHA256="4a8b02c34625fecd9c6583442101c9796fc265a5fc1edb9340d71bed0300f94c" ;;
"windows-amd64") EXPECTED_SHA256="98eb3570bade15cb826b0909338df6cc6d2cf590bc39c471142002db3832b708" ;;
"windows-arm64") EXPECTED_SHA256="094d05caaf6ba235e2bd570b625d064ceb65943866252722a8f3fdba232139c6" ;;
esac
DOWNLOAD_URL="https://go.dev/dl/go${GO_VERSION}.${OS}-${ARCH}.tar.gz"
DOWNLOAD_FILE=$(mktemp)
trap 'rm -f "$DOWNLOAD_FILE"' EXIT
curl -fsSL "$DOWNLOAD_URL" -o "$DOWNLOAD_FILE"
# Verify checksum if we have an expected value and a tool to compute it
if [[ -n "$EXPECTED_SHA256" ]]; then
ACTUAL_SHA256=""
if command -v sha256sum &> /dev/null; then
ACTUAL_SHA256=$(sha256sum "$DOWNLOAD_FILE" | cut -d' ' -f1)
elif command -v shasum &> /dev/null; then
ACTUAL_SHA256=$(shasum -a 256 "$DOWNLOAD_FILE" | cut -d' ' -f1)
elif command -v openssl &> /dev/null; then
ACTUAL_SHA256=$(openssl dgst -sha256 "$DOWNLOAD_FILE" | awk '{print $NF}')
fi
if [[ -n "$ACTUAL_SHA256" ]]; then
if [[ "$ACTUAL_SHA256" != "$EXPECTED_SHA256" ]]; then
echo "Checksum verification failed!" >&2
echo "Expected: $EXPECTED_SHA256" >&2
echo "Actual: $ACTUAL_SHA256" >&2
exit 1
fi
echo "Checksum verified."
else
echo "Warning: No checksum tool available (sha256sum, shasum, or openssl), skipping verification."
fi
else
echo "Warning: No checksum available for ${OS}-${ARCH}, skipping verification."
fi
mkdir -p "$GO_INSTALL_DIR"
tar -xzf "$DOWNLOAD_FILE" -C "$GO_INSTALL_DIR"
GO_CMD="$GO_BIN"
echo "Go $GO_VERSION installed to $GO_INSTALL_DIR"
fi
TASK_SCOPE="$TASK_SCOPE" "$GO_CMD" run -C "$POCKET_DIR" . "$@"