X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=_webi%2Ftemplate.sh;h=eeed37780e8e33a6e6ee7336a9ecab1d98c174d7;hb=953c06cbc34af16103d012cc1861a10a0a2b32cb;hp=4a15ec5057df76a5362c721d5ff2072911d35dec;hpb=426e8c9c2e46adee4e5c913c67ba346a91698b79;p=webi-installers%2F.git diff --git a/_webi/template.sh b/_webi/template.sh index 4a15ec5..eeed377 100644 --- a/_webi/template.sh +++ b/_webi/template.sh @@ -36,6 +36,7 @@ function __bootstrap_webi() { #PKG_FORMATS= WEBI_UA="$(uname -a)" WEBI_PKG_DOWNLOAD="" + WEBI_PKG_PATH="${HOME}/Downloads/webi/${PKG_NAME:-error}/${WEBI_VERSION:-latest}" export WEBI_HOST ## @@ -45,7 +46,7 @@ function __bootstrap_webi() { WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-"${WEBI_PKG:-}".XXXXXXXX)"} export _webi_tmp="${_webi_tmp:-"$HOME/.local/opt/webi-tmp.d"}" - mkdir -p "$HOME/Downloads/webi" + mkdir -p "${WEBI_PKG_PATH}" mkdir -p "$HOME/.local/bin" mkdir -p "$HOME/.local/opt" @@ -68,9 +69,9 @@ function __bootstrap_webi() { fi if [ -n "$(command -v pkg_format_cmd_version)" ]; then - my_versioned_name="$(pkg_format_cmd_version "$WEBI_VERSION")" + my_versioned_name="'$(pkg_format_cmd_version "$WEBI_VERSION")'" else - my_versioned_name="'$pkg_cmd_name' v$WEBI_VERSION" + my_versioned_name="'$pkg_cmd_name v$WEBI_VERSION'" fi echo "$my_versioned_name" @@ -106,25 +107,31 @@ function __bootstrap_webi() { my_current_cmd="$(command -v "$pkg_cmd_name")" set -e if [ -n "$my_current_cmd" ]; then - pkg_current_version="$(pkg_get_current_version 2> /dev/null | head -n 1)" - # remove trailing '.0's for golang's sake - my_current_version="$(echo "$pkg_current_version" | sed 's:\.0::g')" - my_src_version="$(echo "$WEBI_VERSION" | sed 's:\.0::g')" my_canonical_name="$(_webi_canonical_name)" - if [ "$my_src_version" == "$my_current_version" ]; then - echo "$my_canonical_name already installed at $my_current_cmd" - exit 0 - else - if [ "$my_current_cmd" != "$pkg_dst_cmd" ]; then - echo >&2 "WARN: possible conflict between $my_canonical_name and $pkg_current_version at $my_current_cmd" - fi - if [ -x "$pkg_src_cmd" ]; then - # shellcheck disable=2119 - # this function takes no args - webi_link - echo "switched to $my_canonical_name at $pkg_src" - exit 0 + if [ "$my_current_cmd" != "$pkg_dst_cmd" ]; then + echo >&2 "WARN: possible PATH conflict between $my_canonical_name and currently installed version" + echo >&2 " ${pkg_dst_cmd} (new)" + echo >&2 " ${my_current_cmd} (existing)" + #my_current_version=false + fi + # 'readlink' can't read links in paths on macOS 🤦 + # but that's okay, 'cmp -s' is good enough for us + if cmp -s "${pkg_src_cmd}" "${my_current_cmd}"; then + echo "${my_canonical_name} already installed:" + echo -n " ${pkg_dst}" + if [[ ${pkg_src_cmd} != "${my_current_cmd}" ]]; then + echo -n " => ${pkg_src}" fi + echo "" + exit 0 + fi + if [ -x "$pkg_src_cmd" ]; then + # shellcheck disable=2119 + # this function takes no args + webi_link + echo "switched to $my_canonical_name:" + echo " ${pkg_dst} => ${pkg_src}" + exit 0 fi fi export PATH="$my_path" @@ -150,7 +157,7 @@ function __bootstrap_webi() { if [ -n "${2:-}" ]; then my_dl="$2" else - my_dl="$HOME/Downloads/webi/$WEBI_PKG_FILE" + my_dl="${WEBI_PKG_PATH}/$WEBI_PKG_FILE" fi WEBI_PKG_DOWNLOAD="${my_dl}" @@ -200,20 +207,20 @@ function __bootstrap_webi() { webi_extract() { pushd "$WEBI_TMP" > /dev/null 2>&1 if [ "tar" == "$WEBI_EXT" ]; then - echo "Extracting $HOME/Downloads/webi/$WEBI_PKG_FILE" - tar xf "$HOME/Downloads/webi/$WEBI_PKG_FILE" + echo "Extracting ${WEBI_PKG_PATH}/$WEBI_PKG_FILE" + tar xf "${WEBI_PKG_PATH}/$WEBI_PKG_FILE" elif [ "zip" == "$WEBI_EXT" ]; then - echo "Extracting $HOME/Downloads/webi/$WEBI_PKG_FILE" - unzip "$HOME/Downloads/webi/$WEBI_PKG_FILE" > __unzip__.log + echo "Extracting ${WEBI_PKG_PATH}/$WEBI_PKG_FILE" + unzip "${WEBI_PKG_PATH}/$WEBI_PKG_FILE" > __unzip__.log elif [ "exe" == "$WEBI_EXT" ]; then - echo "Moving $HOME/Downloads/webi/$WEBI_PKG_FILE" - mv "$HOME/Downloads/webi/$WEBI_PKG_FILE" . + echo "Moving ${WEBI_PKG_PATH}/$WEBI_PKG_FILE" + mv "${WEBI_PKG_PATH}/$WEBI_PKG_FILE" . elif [ "xz" == "$WEBI_EXT" ]; then - echo "Inflating $HOME/Downloads/webi/$WEBI_PKG_FILE" - unxz -c "$HOME/Downloads/webi/$WEBI_PKG_FILE" > "$(basename "$WEBI_PKG_FILE")" + echo "Inflating ${WEBI_PKG_PATH}/$WEBI_PKG_FILE" + unxz -c "${WEBI_PKG_PATH}/$WEBI_PKG_FILE" > "$(basename "$WEBI_PKG_FILE")" else # do nothing - echo "Failed to extract $HOME/Downloads/webi/$WEBI_PKG_FILE" + echo "Failed to extract ${WEBI_PKG_PATH}/$WEBI_PKG_FILE" exit 1 fi popd > /dev/null 2>&1 @@ -332,7 +339,20 @@ function __bootstrap_webi() { ## # run everything with defaults or overrides as needed - if [ -n "$(command -v pkg_get_current_version)" ]; then + if command -v pkg_install > /dev/null || + command -v pkg_link > /dev/null || + command -v pkg_post_install > /dev/null || + command -v pkg_done_message > /dev/null || + command -v pkg_format_cmd_version > /dev/null || + [[ -n ${WEBI_SINGLE:-} ]] || + [[ -n ${pkg_cmd_name:-} ]] || + [[ -n ${pkg_dst_cmd:-} ]] || + [[ -n ${pkg_dst_dir:-} ]] || + [[ -n ${pkg_dst:-} ]] || + [[ -n ${pkg_src_cmd:-} ]] || + [[ -n ${pkg_src_dir:-} ]] || + [[ -n ${pkg_src:-} ]]; then + pkg_cmd_name="${pkg_cmd_name:-$PKG_NAME}" if [ -n "$WEBI_SINGLE" ]; then