integrations/editors/vscode/package-vsix.sh
1
#!/usr/bin/env bash
2
set -euo pipefail
4
version=${1:?version}
5
archives=$(cd "${2:?archive directory}" && pwd)
6
output=${3:?output directory}
8
extension=$(cd "$(dirname "$0")" && pwd)
9
repository=$(cd "$extension/../../.." && pwd)
10
vsce="$extension/node_modules/.bin/vsce"
11
manifest="$archives/koment_${version}_checksums.txt"
13
cleanup() {
14
rm -rf "$extension/bin"
15
rm -f "$extension/LICENSE" "$extension/icon.png"
16
}
18
trap cleanup EXIT
20
mkdir -p "$output"
21
output=$(cd "$output" && pwd)
23
cp "$repository/LICENSE" "$extension/LICENSE"
24
cp "$repository/internal/ui/assets/koment-logo.png" "$extension/icon.png"
26
verify() {
27
local archive=$1
28
(
29
cd "$archives"
30
if command -v sha256sum >/dev/null; then
31
grep " ${archive}\$" "$manifest" | sha256sum -c -
32
else
33
grep " ${archive}\$" "$manifest" | shasum -a 256 -c -
34
fi
35
)
36
}
38
targets="linux-x64:linux_amd64 linux-arm64:linux_arm64 darwin-x64:darwin_amd64 darwin-arm64:darwin_arm64 win32-x64:windows_amd64 win32-arm64:windows_arm64"
40
for pair in $targets; do
41
target=${pair%%:*}
42
platform=${pair##*:}
44
rm -rf "$extension/bin"
45
mkdir -p "$extension/bin"
47
case "$platform" in
48
windows_*)
49
archive="koment_${version}_${platform}.zip"
50
verify "$archive"
51
unzip -q -o "$archives/$archive" koment.exe -d "$extension/bin"
52
;;
53
*)
54
archive="koment_${version}_${platform}.tar.gz"
55
verify "$archive"
56
tar -xzf "$archives/$archive" -C "$extension/bin" koment
57
chmod +x "$extension/bin/koment"
58
;;
59
esac
61
(cd "$extension" && "$vsce" package --target "$target" \
62
--out "$output/koment-vscode_${version}_${target}.vsix")
63
done
65
rm -rf "$extension/bin"
66
(cd "$extension" && "$vsce" package --out "$output/koment-vscode_${version}.vsix")
68
ls -1 "$output"