Skip to content

Commit f347153

Browse files
committed
feat(asdf-vm.com): Add feature. [skip ci]
1 parent cb3fdbf commit f347153

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

src/asdf-vm.com/install.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/bin/bash
2+
set -o errexit
3+
set -o pipefail
4+
set -o noclobber
5+
set -o nounset
6+
set -o allexport
7+
readonly name="asdf"
8+
readonly githubRepository="asdf-vm/asdf"
9+
apt_get_update() {
10+
if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
11+
echo "Running apt-get update..."
12+
apt-get update -y
13+
fi
14+
}
15+
apt_get_checkinstall() {
16+
if ! dpkg -s "$@" >/dev/null 2>&1; then
17+
apt_get_update
18+
DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends --no-install-suggests --option 'Debug::pkgProblemResolver=true' --option 'Debug::pkgAcquire::Worker=1' "$@"
19+
fi
20+
}
21+
apt_get_cleanup() {
22+
apt-get clean
23+
rm -rf /var/lib/apt/lists/*
24+
}
25+
echo_banner() {
26+
local text="$1"
27+
echo -e "\e[1m\e[97m\e[41m$text\e[0m"
28+
}
29+
github_list_releases() {
30+
if [ -z "$1" ]; then
31+
echo "Usage: list_github_releases <owner/repo>"
32+
return 1
33+
fi
34+
local repo="$1"
35+
local url="https://api.github.com/repos/$repo/releases"
36+
curl -s "$url" | grep -Po '"tag_name": "\K.*?(?=")' | grep -E '^v?[0-9]+\.[0-9]+\.[0-9]+$' | sed 's/^v//'
37+
}
38+
github_get_latest_release() {
39+
if [ -z "$1" ]; then
40+
echo "Usage: get_latest_github_release <owner/repo>"
41+
return 1
42+
fi
43+
github_list_releases "$1" | head -n 1
44+
}
45+
utils_check_version() {
46+
local version=$1
47+
if ! [[ "${version:-}" =~ ^(latest|[0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
48+
printf >&2 '=== [ERROR] Option "version" (value: "%s") is not "latest" or valid semantic version format "X.Y.Z" !\n' \
49+
"$version"
50+
exit 1
51+
fi
52+
}
53+
install() {
54+
utils_check_version "$VERSION"
55+
apt_get_checkinstall git curl ca-certificates
56+
if [ "$VERSION" == 'latest' ] || [ -z "$VERSION" ]; then
57+
VERSION=$(github_get_latest_release "$githubRepository")
58+
fi
59+
su $_REMOTE_USER -c "git clone https://github.com/$githubRepository.git $_REMOTE_USER_HOME/.asdf --branch v$VERSION"
60+
apt_get_cleanup
61+
echo '. "$HOME/.asdf/asdf.sh"' >>"$_REMOTE_USER_HOME/.bashrc"
62+
echo '. "$HOME/.asdf/completions/asdf.bash"' >>"$_REMOTE_USER_HOME/.bashrc"
63+
}
64+
echo_banner "devcontainer.community"
65+
echo "Installing $name..."
66+
install "$@"
67+
echo "(*) Done!"

0 commit comments

Comments
 (0)