|
@@ -3,76 +3,92 @@
|
|
|
download_beta=false
|
|
|
download_version=""
|
|
|
|
|
|
-for arg in "$@"; do
|
|
|
- if [[ "$arg" == "--beta" ]]; then
|
|
|
- download_beta=true
|
|
|
- elif [[ "$arg" == "--version" ]]; then
|
|
|
- download_version=true
|
|
|
- elif [[ "$download_version" == 'true' ]]; then
|
|
|
- download_version="$arg"
|
|
|
- else
|
|
|
- echo "Unknown argument: $arg"
|
|
|
- echo "Usage: $0 [--beta] [--version <version>]"
|
|
|
- exit 1
|
|
|
- fi
|
|
|
+while [ $# -gt 0 ]; do
|
|
|
+ case "$1" in
|
|
|
+ --beta)
|
|
|
+ download_beta=true
|
|
|
+ shift
|
|
|
+ ;;
|
|
|
+ --version)
|
|
|
+ shift
|
|
|
+ if [ $# -eq 0 ]; then
|
|
|
+ echo "Missing argument for --version"
|
|
|
+ echo "Usage: $0 [--beta] [--version <version>]"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+ download_version="$1"
|
|
|
+ shift
|
|
|
+ ;;
|
|
|
+ *)
|
|
|
+ echo "Unknown argument: $1"
|
|
|
+ echo "Usage: $0 [--beta] [--version <version>]"
|
|
|
+ exit 1
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
done
|
|
|
|
|
|
-if [[ $(command -v dpkg) ]]; then
|
|
|
+if command -v pacman >/dev/null 2>&1; then
|
|
|
+ os="linux"
|
|
|
+ arch=$(uname -m)
|
|
|
+ package_suffix=".pkg.tar.zst"
|
|
|
+ package_install="pacman -U --noconfirm"
|
|
|
+elif command -v dpkg >/dev/null 2>&1; then
|
|
|
os="linux"
|
|
|
arch=$(dpkg --print-architecture)
|
|
|
package_suffix=".deb"
|
|
|
package_install="dpkg -i"
|
|
|
-elif [[ $(command -v dnf) ]]; then
|
|
|
+elif command -v dnf >/dev/null 2>&1; then
|
|
|
os="linux"
|
|
|
arch=$(uname -m)
|
|
|
package_suffix=".rpm"
|
|
|
package_install="dnf install -y"
|
|
|
-elif [[ $(command -v rpm) ]]; then
|
|
|
+elif command -v rpm >/dev/null 2>&1; then
|
|
|
os="linux"
|
|
|
arch=$(uname -m)
|
|
|
package_suffix=".rpm"
|
|
|
package_install="rpm -i"
|
|
|
-elif [[ $(command -v pacman) ]]; then
|
|
|
- os="linux"
|
|
|
- arch=$(uname -m)
|
|
|
- package_suffix=".pkg.tar.zst"
|
|
|
- package_install="pacman -U --noconfirm"
|
|
|
-elif [[ $(command -v opkg) ]]; then
|
|
|
+elif command -v opkg >/dev/null 2>&1; then
|
|
|
os="openwrt"
|
|
|
- source /etc/os-release
|
|
|
+ . /etc/os-release
|
|
|
arch="$OPENWRT_ARCH"
|
|
|
package_suffix=".ipk"
|
|
|
- package_install="opkg update && opkg install -y"
|
|
|
+ package_install="opkg update && opkg install"
|
|
|
else
|
|
|
echo "Missing supported package manager."
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
-if [[ -z "$download_version" ]]; then
|
|
|
- if [[ "$download_beta" != 'true' ]]; then
|
|
|
- if [[ -n "$GITHUB_TOKEN" ]]; then
|
|
|
- latest_release=$(curl -s --fail-with-body -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/SagerNet/sing-box/releases/latest)
|
|
|
+if [ -z "$download_version" ]; then
|
|
|
+ if [ "$download_beta" != "true" ]; then
|
|
|
+ if [ -n "$GITHUB_TOKEN" ]; then
|
|
|
+ latest_release=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/SagerNet/sing-box/releases/latest)
|
|
|
else
|
|
|
- latest_release=$(curl -s --fail-with-body https://api.github.com/repos/SagerNet/sing-box/releases/latest)
|
|
|
+ latest_release=$(curl -s https://api.github.com/repos/SagerNet/sing-box/releases/latest)
|
|
|
fi
|
|
|
curl_exit_status=$?
|
|
|
- if [[ $curl_exit_status -ne 0 ]]; then
|
|
|
+ if [ $curl_exit_status -ne 0 ]; then
|
|
|
+ exit $curl_exit_status
|
|
|
+ fi
|
|
|
+ if [ "$(echo "$latest_release" | grep tag_name | wc -l)" -eq 0 ]; then
|
|
|
echo "$latest_release"
|
|
|
- exit $?
|
|
|
+ exit 1
|
|
|
fi
|
|
|
- download_version=$(echo "$latest_release" | grep tag_name | cut -d ":" -f2 | sed 's/\"//g;s/\,//g;s/\ //g;s/v//')
|
|
|
+ download_version=$(echo "$latest_release" | grep tag_name | head -n 1 | awk -F: '{print $2}' | sed 's/[", v]//g')
|
|
|
else
|
|
|
- if [[ -n "$GITHUB_TOKEN" ]]; then
|
|
|
- latest_release=$(curl -s --fail-with-body -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/SagerNet/sing-box/releases)
|
|
|
+ if [ -n "$GITHUB_TOKEN" ]; then
|
|
|
+ latest_release=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" https://api.github.com/repos/SagerNet/sing-box/releases)
|
|
|
else
|
|
|
- latest_release=$(curl -s --fail-with-body https://api.github.com/repos/SagerNet/sing-box/releases)
|
|
|
+ latest_release=$(curl -s https://api.github.com/repos/SagerNet/sing-box/releases)
|
|
|
fi
|
|
|
curl_exit_status=$?
|
|
|
- if [[ $? -ne 0 ]]; then
|
|
|
+ if [ $curl_exit_status -ne 0 ]; then
|
|
|
+ exit $curl_exit_status
|
|
|
+ fi
|
|
|
+ if [ "$(echo "$latest_release" | grep tag_name | wc -l)" -eq 0 ]; then
|
|
|
echo "$latest_release"
|
|
|
- exit $?
|
|
|
+ exit 1
|
|
|
fi
|
|
|
- download_version=$(echo "$latest_release" | grep tag_name | head -n 1 | cut -d ":" -f2 | sed 's/\"//g;s/\,//g;s/\ //g;s/v//')
|
|
|
+ download_version=$(echo "$latest_release" | grep tag_name | head -n 1 | awk -F: '{print $2}' | sed 's/[", v]//g')
|
|
|
fi
|
|
|
fi
|
|
|
|
|
@@ -80,18 +96,21 @@ package_name="sing-box_${download_version}_${os}_${arch}${package_suffix}"
|
|
|
package_url="https://github.com/SagerNet/sing-box/releases/download/v${download_version}/${package_name}"
|
|
|
|
|
|
echo "Downloading $package_url"
|
|
|
-if [[ -n "$GITHUB_TOKEN" ]]; then
|
|
|
- curl --fail-with-body -Lo "$package_name" -H "Authorization: token ${GITHUB_TOKEN}" "$package_url"
|
|
|
+if [ -n "$GITHUB_TOKEN" ]; then
|
|
|
+ curl --fail -Lo "$package_name" -H "Authorization: token ${GITHUB_TOKEN}" "$package_url"
|
|
|
else
|
|
|
- curl --fail-with-body -Lo "$package_name" "$package_url"
|
|
|
+ curl --fail -Lo "$package_name" "$package_url"
|
|
|
fi
|
|
|
|
|
|
-if [[ $? -ne 0 ]]; then
|
|
|
- exit $?
|
|
|
+curl_exit_status=$?
|
|
|
+if [ $curl_exit_status -ne 0 ]; then
|
|
|
+ exit $curl_exit_status
|
|
|
fi
|
|
|
|
|
|
-if [[ $(command -v sudo) ]]; then
|
|
|
+if command -v sudo >/dev/null 2>&1; then
|
|
|
package_install="sudo $package_install"
|
|
|
fi
|
|
|
|
|
|
-echo "$package_install $package_name" && $package_install "$package_name" && rm "$package_name"
|
|
|
+echo "$package_install $package_name"
|
|
|
+sh -c "$package_install \"$package_name\""
|
|
|
+rm -f "$package_name"
|