2023-08-15 17:47:55 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
if [[ "$(realpath "$(dirname "$(realpath -s "$0")")/../../../")" == "/" ]]; then
|
|
|
|
. /usr/local/libexec/zio/helpers/bash.sh
|
|
|
|
else
|
|
|
|
. "$(dirname "$(realpath -s "$0")")/../libexec/zio/helpers/bash.sh"
|
|
|
|
fi
|
|
|
|
|
|
|
|
requested_package="$1"
|
|
|
|
tmp_path_hash="$(date +%s)"
|
|
|
|
|
|
|
|
function get_install_path() {
|
|
|
|
install_path="/usr/local/bin/$1"
|
|
|
|
|
|
|
|
if [[ -f "$install_path" ]] && [[ "$(file "$install_path")" != *": empty" ]]; then
|
|
|
|
chmod +x "$install_path"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "$install_path"
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_name() {
|
|
|
|
package_id="$1"
|
|
|
|
package_name=""
|
|
|
|
|
|
|
|
case $package_id in
|
|
|
|
"caddy") package_name="Caddy" ;;
|
|
|
|
*) package_name="$package_id" ;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
echo "$package_name"
|
|
|
|
}
|
|
|
|
|
|
|
|
function get_tmp_path() {
|
|
|
|
tmp_path="/tmp/$1_${tmp_path_hash}"
|
|
|
|
|
|
|
|
if [[ -f "$tmp_path" ]] && [[ "$(file "$tmp_path")" != *": empty" ]]; then
|
|
|
|
chmod +x "$tmp_path"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo "$tmp_path"
|
|
|
|
}
|
|
|
|
|
|
|
|
function download() {
|
|
|
|
package_id="$1"
|
|
|
|
url="$2"
|
|
|
|
|
|
|
|
package_name="$(get_name "$package_id")"
|
|
|
|
package_tmp_path="$(get_tmp_path "$package_id")"
|
|
|
|
|
|
|
|
say info "Downloading: $package_name ($package_tmp_path)"
|
|
|
|
wget "$url" -O "$(get_tmp_path "$package_id")"
|
|
|
|
}
|
|
|
|
|
|
|
|
function install() {
|
|
|
|
package_id="$1"
|
|
|
|
package_version="$2"
|
|
|
|
|
|
|
|
package_name="$(get_name "$package_id")"
|
|
|
|
|
|
|
|
if [[ -z "$package_version" ]]; then
|
|
|
|
say info "Installing: $package_name ($(get_install_path "$package_id"))"
|
|
|
|
mv "$(get_tmp_path "$package_id")" "$(get_install_path "$package_id")"
|
|
|
|
else
|
|
|
|
if [[ "$package_version" != "v"* ]]; then
|
|
|
|
package_version="v$package_version"
|
|
|
|
fi
|
|
|
|
|
|
|
|
package_id_version="$package_id-$package_version"
|
|
|
|
|
|
|
|
say info "Installing: $package_name $package_version ($(get_install_path "$package_id_version"))"
|
|
|
|
rm -f "$(get_install_path "$package_id")"
|
|
|
|
mv "$(get_tmp_path "$package_id")" "$(get_install_path "$package_id_version")"
|
|
|
|
|
|
|
|
say info "Symlinking: $(get_install_path "$package_id_version") ➔ $(get_install_path "$package_id")"
|
|
|
|
ln -s "$(get_install_path "$package_id_version")" "$(get_install_path "$package_id")"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
function download_caddy() {
|
|
|
|
package_id="caddy"
|
|
|
|
|
|
|
|
download "caddy" "https://caddyserver.com/api/download?os=linux&arch=amd64&p=github.com%2Fcaddy-dns%2Fcloudflare"
|
|
|
|
|
|
|
|
caddy_version="$($(get_tmp_path "$package_id") version)"
|
|
|
|
caddy_version_array=($caddy_version)
|
|
|
|
caddy_version="${caddy_version_array[0]}"
|
|
|
|
|
|
|
|
install "$package_id" "$caddy_version"
|
|
|
|
}
|
|
|
|
|
|
|
|
function download_generic() {
|
|
|
|
package_id="$requested_package"
|
|
|
|
download "$requested_package" "$1"
|
|
|
|
install "$requested_package"
|
|
|
|
}
|
|
|
|
|
2023-08-15 18:00:33 +02:00
|
|
|
test_root
|
|
|
|
test_prog "wget"
|
|
|
|
|
2023-08-15 17:47:55 +02:00
|
|
|
case $requested_package in
|
|
|
|
"caddy") download_caddy ;;
|
|
|
|
*) die "Package '$requested_package' cannot be installed by this tool" ;;
|
|
|
|
esac
|