10 # TODO should this be BASEURL instead?
19 # TODO not sure if BUILD is the best name for this
29 ## Set up tmp, download, and install directories
32 WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-${WEBI_PKG:-}.XXXXXXXX)"}
34 mkdir -p "$HOME/Downloads"
35 mkdir -p "$HOME/.local/bin"
36 mkdir -p "$HOME/.local/opt"
42 export WEBI_CURL="$(command -v curl)"
43 export WEBI_WGET="$(command -v wget)"
47 # Test for existing version
49 my_current_cmd="$(command -v "$pkg_cmd_name")"
51 if [ -n "$my_current_cmd" ]; then
52 pkg_current_version="$(pkg_get_current_version)"
53 # remove trailing '.0's for golang's sake
54 my_current_version="$(echo $pkg_current_version | sed 's:\.0::g')"
55 my_new_version="$(echo $WEBI_VERSION | sed 's:\.0::g')"
56 if [ -n "$(command -v pkg_format_cmd_version)" ]; then
57 my_canonical_name="$(pkg_format_cmd_version "$WEBI_VERSION")"
59 #my_canonical_name="$WEBI_NAME $WEBI_VERSION"
60 my_canonical_name="$pkg_cmd_name v$WEBI_VERSION"
62 if [ "$my_new_version" == "$my_current_version" ]; then
63 echo "$my_canonical_name already installed at $my_current_cmd"
66 if [ "$my_current_cmd" != "$pkg_common_cmd" ]; then
67 echo "WARN: possible conflict between $my_canonical_name and $pkg_current_version at $my_current_cmd"
69 if [ -x "$pkg_new_cmd" ]; then
71 echo "switched to $my_canonical_name at $pkg_new_opt"
79 if [ -n "${1:-}" ]; then
82 if [ "error" == "$WEBI_CHANNEL" ]; then
83 echo "Could not find $WEBI_NAME v$WEBI_VERSION"
86 my_url="$WEBI_PKG_URL"
87 echo "Downloading $WEBI_NAME v$WEBI_VERSION"
89 if [ -n "${2:-}" ]; then
92 my_dl="$HOME/Downloads/$WEBI_PKG_FILE"
95 if [ -n "$WEBI_WGET" ]; then
96 # wget has resumable downloads
97 # TODO wget -c --content-disposition "$my_url"
99 wget -q --show-progress -c "$my_url" --user-agent="wget $WEBI_UA" -O "$my_dl"
100 if ! [ $? -eq 0 ]; then
101 echo "failed to download from $WEBI_PKG_URL"
106 # BSD curl is non-resumable, hence we don't bother
107 # TODO curl -fsSL --remote-name --remote-header-name --write-out "$my_url"
108 curl -fSL "$my_url" -H "User-Agent: curl $WEBI_UA" -o "$my_dl"
113 pushd "$WEBI_TMP" 2>&1 >/dev/null
114 if [ "tar" == "$WEBI_EXT" ]; then
115 echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
116 tar xf "$HOME/Downloads/$WEBI_PKG_FILE"
117 elif [ "zip" == "$WEBI_EXT" ]; then
118 echo "Extracting $HOME/Downloads/$WEBI_PKG_FILE"
119 unzip "$HOME/Downloads/$WEBI_PKG_FILE"
120 elif [ "exe" == "$WEBI_EXT" ]; then
121 # do nothing (but don't leave an empty if block either)
123 elif [ "xz" == "$WEBI_EXT" ]; then
124 echo "Inflating $HOME/Downloads/$WEBI_PKG_FILE"
125 unxz -c "$HOME/Downloads/$WEBI_PKG_FILE" > $(basename "$WEBI_PKG_FILE")
128 echo "Failed to extract $HOME/Downloads/$WEBI_PKG_FILE"
135 # make sure that we don't recursively install pathman with webi
137 export PATH="$HOME/.local/bin:$PATH"
139 my_pathman=$(command -v pathman)
141 export PATH="$my_path"
143 # install pathman if not already installed
144 if [ -z "$my_pathman" ]; then
145 "$HOME/.local/bin/webi" pathman
146 "$HOME/.local/bin/pathman" add "$HOME/.local/bin"
147 export PATH="$HOME/.local/bin:$PATH"
150 # in case pathman was recently installed and the PATH not updated
151 "$HOME/.local/bin/pathman" add "$1"
156 ## BEGIN user-submited script
164 ## END user-submitted script
168 if [ -n $(command -v pkg_install) ]; then
169 pkg_cmd_name="${pkg_cmd_name:-$WEBI_NAME}"
171 pkg_common_opt="${pkg_common_opt:-$HOME/.local/opt/$pkg_cmd_name}"
172 pkg_common_bin="${pkg_common_bin:-$pkg_common_opt/bin}"
173 pkg_common_cmd="${pkg_common_cmd:-$pkg_common_bin/$pkg_cmd_name}"
175 pkg_new_opt="${pkg_new_opt:-$HOME/.local/opt/$pkg_cmd_name-v$WEBI_VERSION}"
176 pkg_new_bin="${pkg_new_bin:-$pkg_new_opt/bin}"
177 pkg_new_cmd="${pkg_new_cmd:-$pkg_new_bin/$pkg_cmd_name}"
179 [ -n $(command -v pkg_pre_install) ] && pkg_pre_install
181 echo "Installing '$pkg_cmd_name' v$WEBI_VERSION as $pkg_new_cmd"
184 [ -n $(command -v pkg_post_install) ] && pkg_post_install
186 if [ -n $(command -v pkg_post_install_message) ]; then
187 pkg_post_install_message
189 echo "Installed '$pkg_cmd_name' v$WEBI_VERSION as $pkg_new_cmd"