#WEBI_HOST=
#WEBI_RELEASES=
#WEBI_CSV=
+#WEBI_TAG=
#WEBI_VERSION=
#WEBI_MAJOR=
#WEBI_MINOR=
#WEBI_EXT=
#WEBI_PKG_URL=
#WEBI_PKG_FILE=
+export WEBI_HOST
##
## Set up tmp, download, and install directories
##
-WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-go.XXXXXXXX)"}
+WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-${WEBI_PKG:-}.XXXXXXXX)"}
mkdir -p "$HOME/Downloads"
mkdir -p "$HOME/.local/bin"
export WEBI_WGET="$(command -v wget)"
set -e
+webi_check() {
+ # Test for existing version
+ set +e
+ my_current_cmd="$(command -v "$pkg_cmd_name")"
+ set -e
+ if [ -n "$my_current_cmd" ]; then
+ pkg_current_version="$(pkg_get_current_version)"
+ # remove trailing '.0's for golang's sake
+ my_current_version="$(echo $pkg_current_version | sed 's:\.0::g')"
+ my_new_version="$(echo $WEBI_VERSION | sed 's:\.0::g')"
+ if [ -n "$(command -v pkg_format_cmd_version)" ]; then
+ my_canonical_name="$(pkg_format_cmd_version "$WEBI_VERSION")"
+ else
+ #my_canonical_name="$WEBI_NAME $WEBI_VERSION"
+ my_canonical_name="$pkg_cmd_name v$WEBI_VERSION"
+ fi
+ if [ "$my_new_version" == "$my_current_version" ]; then
+ echo "$my_canonical_name already installed at $my_current_cmd"
+ exit 0
+ else
+ if [ "$my_current_cmd" != "$pkg_common_cmd" ]; then
+ echo "WARN: possible conflict between $my_canonical_name and $pkg_current_version at $my_current_cmd"
+ fi
+ if [ -x "$pkg_new_cmd" ]; then
+ pkg_link_new_version
+ echo "switched to $my_canonical_name at $pkg_new_opt"
+ exit 0
+ fi
+ fi
+ fi
+}
+
webi_download() {
if [ -n "${1:-}" ]; then
my_url="$1"
if [ -n "$WEBI_WGET" ]; then
# wget has resumable downloads
# TODO wget -c --content-disposition "$my_url"
+ set +e
wget -q --show-progress -c "$my_url" --user-agent="wget $WEBI_UA" -O "$my_dl"
+ if ! [ $? -eq 0 ]; then
+ echo "failed to download from $WEBI_PKG_URL"
+ exit 1
+ fi
+ set -e
else
# BSD curl is non-resumable, hence we don't bother
# TODO curl -fsSL --remote-name --remote-header-name --write-out "$my_url"
elif [ "zip" == "$WEBI_EXT" ]; then
echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
unzip "$HOME/Downloads/$WEBI_PKG_FILE"
+ elif [ "exe" == "$WEBI_EXT" ]; then
+ # do nothing (but don't leave an empty if block either)
+ echo -n ""
+ elif [ "xz" == "$WEBI_EXT" ]; then
+ echo "Inflating $HOME/Downloads/$WEBI_PKG_FILE"
+ unxz -c "$HOME/Downloads/$WEBI_PKG_FILE" > $(basename "$WEBI_PKG_FILE")
else
# do nothing
echo "Failed to extract $HOME/Downloads/$WEBI_PKG_FILE"
##
##
+if [ -n $(command -v pkg_install) ]; then
+ pkg_cmd_name="${pkg_cmd_name:-$WEBI_NAME}"
+
+ pkg_common_opt="${pkg_common_opt:-$HOME/.local/opt/$pkg_cmd_name}"
+ pkg_common_bin="${pkg_common_bin:-$pkg_common_opt/bin}"
+ pkg_common_cmd="${pkg_common_cmd:-$pkg_common_bin/$pkg_cmd_name}"
+
+ pkg_new_opt="${pkg_new_opt:-$HOME/.local/opt/$pkg_cmd_name-v$WEBI_VERSION}"
+ pkg_new_bin="${pkg_new_bin:-$pkg_new_opt/bin}"
+ pkg_new_cmd="${pkg_new_cmd:-$pkg_new_bin/$pkg_cmd_name}"
+
+ [ -n $(command -v pkg_pre_install) ] && pkg_pre_install
+
+ echo "Installing '$pkg_cmd_name' v$WEBI_VERSION as $pkg_new_cmd"
+ pkg_install
+
+ [ -n $(command -v pkg_post_install) ] && pkg_post_install
+
+ if [ -n $(command -v pkg_post_install_message) ]; then
+ pkg_post_install_message
+ else
+ echo "Installed '$pkg_cmd_name' v$WEBI_VERSION as $pkg_new_cmd"
+ fi
+ echo ""
+fi
+
+rm -rf "$WEBI_TMP"
+
}