From 06f4be910e2f3828e61cace8b5ca822818501a48 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Sun, 3 May 2020 22:35:23 -0600 Subject: [PATCH] make webi great again --- webi/webi.bash | 70 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 8 deletions(-) diff --git a/webi/webi.bash b/webi/webi.bash index 1231c77..9ca3a88 100644 --- a/webi/webi.bash +++ b/webi/webi.bash @@ -7,12 +7,12 @@ # for the people like us that are too lazy even to run curl https://webinstall.dev/PACKAGE_NAME | bash # examples: | # ```bash -# webi node +# webi node@latest # ``` #
# # ```bash -# webi golang +# webi golang@v1.14 # ``` #
# @@ -20,19 +20,73 @@ # webi rustlang # ``` -# TODO webi package@semver#channel +{ + +mkdir -p "$HOME/.local/bin" + +cat << EOF > "$HOME/.local/bin/webi" +#!/bin/bash -cat << EOF > ~/.local/bin/webi set -e set -u -my_package=\${1:-} +my_package="\${1:-}" if [ -z "\$my_package" ]; then - echo "Usage: webi " - echo "Example: webi node" + echo "Usage: webi @" + echo "Example: webi node@latest" exit 1 fi -curl -fsSL "https://webinstall.dev/\$my_package" | bash +## +## Detect acceptable package formats +## + +my_ext="" +set +e +if [ -n "\$(command -v git)" ]; then + my_ext="git,\${my_ext}" +fi +if [ -n "\$(command -v tar)" ]; then + my_ext="tar,\${my_ext}" +fi +if [ -n "\$(command -v unzip)" ]; then + my_ext="zip,\${my_ext}" +fi +if [ -n "\$(command -v pkgutil)" ]; then + my_ext="pkg,\${my_ext}" +fi +if [ -n "\$(command -v diskutil)" ]; then + # note: could also detect via hdiutil + my_ext="dmg,\${my_ext}" +fi +set -e + +## +## Detect http client +## +set +e +export WEBI_CURL="\$(command -v curl)" +export WEBI_WGET="\$(command -v wget)" +set -e + +export WEBI_BOOT="\$(mktemp -d -t "\$my_package-bootstrap.XXXXXXXX")" +export WEBI_UA="\$(uname -a)" + +if [ -n "\$WEBI_CURL" ]; then + curl -fsSL "https://webinstall.dev/\$my_package?ext=\$my_ext" -H "User-Agent: curl \$WEBI_UA" \\ + -o "\$WEBI_BOOT/\$my_package-bootstrap.sh" +else + wget -q "https://webinstall.dev/\$my_package?ext=\$my_ext" --user-agent="wget \$WEBI_UA" \\ + -O "\$WEBI_BOOT/\$my_package-bootstrap.sh" +fi + +pushd "\$WEBI_BOOT" 2>&1 > /dev/null + bash "\$my_package-bootstrap.sh" +popd 2>&1 > /dev/null + +rm -rf "\$WEBI_BOOT" EOF + chmod a+x ~/.local/bin/webi + +} -- 2.25.1