X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=_webi%2Fbootstrap.sh;h=877ad818443500feccc80ab79a49eeebac4cfba7;hb=912c9c8f06590f06a2a9df1c03d8ead43e96ec70;hp=7b4057869c2ae3c969aa08e6ee28bc21518c1535;hpb=4adeab6013edd06e3e6be037cf8e7859b4cc8150;p=webi-installers%2F.git diff --git a/_webi/bootstrap.sh b/_webi/bootstrap.sh index 7b40578..877ad81 100644 --- a/_webi/bootstrap.sh +++ b/_webi/bootstrap.sh @@ -2,6 +2,9 @@ { +set -e +set -u + #WEBI_PKG= #WEBI_HOST=https://webinstall.dev export WEBI_HOST @@ -16,12 +19,15 @@ set -u { -my_package="\${1:-}" -if [ -z "\$my_package" ]; then - echo "Usage: webi @" - echo "Example: webi node@latest" - exit 1 +export WEBI_TIMESTAMP=\$(date +%F_%H-%M-%S) +export _webi_tmp="\${_webi_tmp:-\$(mktemp -d -t webi-\$WEBI_TIMESTAMP.XXXXXXXX)}" + +if [ -n "\${_WEBI_PARENT:-}" ]; then + export _WEBI_CHILD=true +else + export _WEBI_CHILD= fi +export _WEBI_PARENT=true ## ## Detect acceptable package formats @@ -31,64 +37,106 @@ my_ext="" set +e # NOTE: the order here is least favorable to most favorable if [ -n "\$(command -v pkgutil)" ]; then - my_ext="pkg,\$my_ext" + my_ext="pkg,\$my_ext" fi # disable this check for the sake of building the macOS installer on Linux #if [ -n "\$(command -v diskutil)" ]; then - # note: could also detect via hdiutil - my_ext="dmg,\$my_ext" + # note: could also detect via hdiutil + my_ext="dmg,\$my_ext" #fi if [ -n "\$(command -v git)" ]; then - my_ext="git,\$my_ext" + my_ext="git,\$my_ext" fi if [ -n "\$(command -v unxz)" ]; then - my_ext="xz,\$my_ext" + my_ext="xz,\$my_ext" fi if [ -n "\$(command -v unzip)" ]; then - my_ext="zip,\$my_ext" -else - echo "WARN: 'unzip' not found" + my_ext="zip,\$my_ext" fi +# for mac/linux 'exe' refers to the uncompressed binary without extension +my_ext="exe,\$my_ext" if [ -n "\$(command -v tar)" ]; then - my_ext="tar,\$my_ext" + my_ext="tar,\$my_ext" fi my_ext="\$(echo "\$my_ext" | sed 's/,$//')" # nix trailing comma 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_HOST="\${WEBI_HOST:-https://webinstall.dev}" export WEBI_UA="\$(uname -a)" -my_installer_url="\$WEBI_HOST/api/installers/\$my_package.sh?formats=\$my_ext" -set +e -if [ -n "\$WEBI_CURL" ]; then - curl -fsSL "\$my_installer_url" -H "User-Agent: curl \$WEBI_UA" \\ - -o "\$WEBI_BOOT/\$my_package-bootstrap.sh" -else - wget -q "\$my_installer_url" --user-agent="wget \$WEBI_UA" \\ - -O "\$WEBI_BOOT/\$my_package-bootstrap.sh" -fi -if ! [ \$? -eq 0 ]; then - echo "error fetching '\$my_installer_url'" - exit 1 -fi -set -e -pushd "\$WEBI_BOOT" 2>&1 > /dev/null - bash "\$my_package-bootstrap.sh" -popd 2>&1 > /dev/null +webinstall() { -rm -rf "\$WEBI_BOOT" + my_package="\${1:-}" + if [ -z "\$my_package" ]; then + >&2 echo "Usage: webi @ ..." + >&2 echo "Example: webi node@lts rg" + exit 1 + fi + + export WEBI_BOOT="\$(mktemp -d -t "\$my_package-bootstrap.\$WEBI_TIMESTAMP.XXXXXXXX")" + + my_installer_url="\$WEBI_HOST/api/installers/\$my_package.sh?formats=\$my_ext" + set +e + if [ -n "\$WEBI_CURL" ]; then + curl -fsSL "\$my_installer_url" -H "User-Agent: curl \$WEBI_UA" \\ + -o "\$WEBI_BOOT/\$my_package-bootstrap.sh" + else + wget -q "\$my_installer_url" --user-agent="wget \$WEBI_UA" \\ + -O "\$WEBI_BOOT/\$my_package-bootstrap.sh" + fi + if ! [ \$? -eq 0 ]; then + >&2 echo "error fetching '\$my_installer_url'" + exit 1 + fi + set -e + + pushd "\$WEBI_BOOT" 2>&1 > /dev/null + bash "\$my_package-bootstrap.sh" + popd 2>&1 > /dev/null + + rm -rf "\$WEBI_BOOT" + +} + +show_path_updates() { + + if ! [ -n "\${_WEBI_CHILD}" ]; then + if [ -f "\$_webi_tmp/.PATH.env" ]; then + my_paths=\$(cat "\$_webi_tmp/.PATH.env" | sort -u) + if [ -n "\$my_paths" ]; then + echo "IMPORTANT: You must update you PATH to use the installed program(s)" + echo "" + echo "You can CLOSE and REOPEN Terminal, or RUN these exports:" + echo "" + echo "\$my_paths" + echo "" + fi + rm -f "\$_webi_tmp/.PATH.env" + fi + fi + +} + +for pkgname in "\$@" +do + webinstall "\$pkgname" +done + +show_path_updates } + EOF chmod a+x "$HOME/.local/bin/webi"