X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=webi%2Ftemplate.bash;h=f5147ea8ec6f815ce3b6302437beaa56c0225d58;hb=969df21e47c4d8312925638739a23eef0c349e1c;hp=2af0e7e033ed9a571ebd20acd7a4a75275723f12;hpb=3c08ddc94be85d5dae0d4c40614812ee307eb545;p=webi-installers%2F.git diff --git a/webi/template.bash b/webi/template.bash index 2af0e7e..f5147ea 100644 --- a/webi/template.bash +++ b/webi/template.bash @@ -11,6 +11,7 @@ set -u #WEBI_HOST= #WEBI_RELEASES= #WEBI_CSV= +#WEBI_TAG= #WEBI_VERSION= #WEBI_MAJOR= #WEBI_MINOR= @@ -22,12 +23,13 @@ set -u #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" @@ -41,6 +43,38 @@ export WEBI_CURL="$(command -v curl)" 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_src_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_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 "WARN: possible conflict between $my_canonical_name and $pkg_current_version at $my_current_cmd" + fi + if [ -x "$pkg_src_cmd" ]; then + pkg_link_src_dst + echo "switched to $my_canonical_name at $pkg_src" + exit 0 + fi + fi + fi +} + webi_download() { if [ -n "${1:-}" ]; then my_url="$1" @@ -61,7 +95,13 @@ webi_download() { 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" @@ -77,6 +117,12 @@ webi_extract() { 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" @@ -119,4 +165,32 @@ webi_path_add() { ## ## +if [ -n "$(command -v pkg_install)" ]; then + pkg_cmd_name="${pkg_cmd_name:-$WEBI_NAME}" + + pkg_dst="${pkg_dst:-$HOME/.local/opt/$pkg_cmd_name}" + pkg_dst_bin="${pkg_dst_bin:-$pkg_dst/bin}" + pkg_dst_cmd="${pkg_dst_cmd:-$pkg_dst_bin/$pkg_cmd_name}" + + pkg_src="${pkg_src:-$HOME/.local/opt/$pkg_cmd_name-v$WEBI_VERSION}" + pkg_src_bin="${pkg_src_bin:-$pkg_src/bin}" + pkg_src_cmd="${pkg_src_cmd:-$pkg_src_bin/$pkg_cmd_name}" + + [ -n "$(command -v pkg_pre_install)" ] && pkg_pre_install + + echo "Installing '$pkg_cmd_name' v$WEBI_VERSION as $pkg_src_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_src_cmd" + fi + echo "" +fi + +rm -rf "$WEBI_TMP" + }