#PKG_FORMATS=
WEBI_UA="$(uname -a)"
WEBI_PKG_DOWNLOAD=""
+ WEBI_PKG_PATH="${HOME}/Downloads/webi/${PKG_NAME:-error}/${WEBI_VERSION:-latest}"
export WEBI_HOST
##
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"
+ mkdir -p "${WEBI_PKG_PATH}"
mkdir -p "$HOME/.local/bin"
mkdir -p "$HOME/.local/opt"
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"
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"
if [ -n "${2:-}" ]; then
my_dl="$2"
else
- my_dl="$HOME/Downloads/$WEBI_PKG_FILE"
+ my_dl="${WEBI_PKG_PATH}/$WEBI_PKG_FILE"
fi
WEBI_PKG_DOWNLOAD="${my_dl}"
webi_extract() {
pushd "$WEBI_TMP" > /dev/null 2>&1
if [ "tar" == "$WEBI_EXT" ]; then
- echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
- tar xf "$HOME/Downloads/$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_PKG_FILE"
- unzip "$HOME/Downloads/$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_PKG_FILE"
- mv "$HOME/Downloads/$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_PKG_FILE"
- unxz -c "$HOME/Downloads/$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_PKG_FILE"
+ echo "Failed to extract ${WEBI_PKG_PATH}/$WEBI_PKG_FILE"
exit 1
fi
popd > /dev/null 2>&1
##
# 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