mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-07 13:44:24 +00:00
feat(update): add pre-release version selection prompt
Replace the single latest-release fetch in update_x-ui() with get_releases() and select_version() functions that offer users a choice between the latest stable and latest pre-release version, matching the pattern already added to install.sh.
This commit is contained in:
parent
3d1d422ae1
commit
f6d993c29d
1 changed files with 44 additions and 9 deletions
53
update.sh
53
update.sh
|
|
@ -745,6 +745,47 @@ config_after_update() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_releases() {
|
||||||
|
local releases_json
|
||||||
|
releases_json=$(${curl_bin} -Ls "https://api.github.com/repos/Sora39831/3x-ui/releases" 2>/dev/null)
|
||||||
|
if [[ -z "$releases_json" ]]; then
|
||||||
|
echo -e "${yellow}Trying to fetch version with IPv4...${plain}"
|
||||||
|
releases_json=$(${curl_bin} -4 -Ls "https://api.github.com/repos/Sora39831/3x-ui/releases" 2>/dev/null)
|
||||||
|
if [[ -z "$releases_json" ]]; then
|
||||||
|
_fail "ERROR: Failed to fetch x-ui version, it may be due to GitHub API restrictions, please try it later"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
latest_stable=$(echo "$releases_json" | tr '{' '\n' | grep '"prerelease":false' | head -1 | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
|
latest_prerelease=$(echo "$releases_json" | tr '{' '\n' | grep '"prerelease":true' | head -1 | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||||
|
|
||||||
|
if [[ -z "$latest_stable" && -z "$latest_prerelease" ]]; then
|
||||||
|
_fail "ERROR: Failed to fetch x-ui version"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
select_version() {
|
||||||
|
if [[ -n "$latest_stable" && -n "$latest_prerelease" ]]; then
|
||||||
|
echo ""
|
||||||
|
echo -e "${green}Which version do you want to update to?${plain}"
|
||||||
|
echo -e "${green}1)${plain} Latest Stable: ${latest_stable}"
|
||||||
|
echo -e "${green}2)${plain} Latest Pre-release: ${latest_prerelease}"
|
||||||
|
read -rp "Please enter your choice [1-2]: " version_choice
|
||||||
|
while [[ "$version_choice" != "1" && "$version_choice" != "2" ]]; do
|
||||||
|
read -rp "Invalid input, please re-enter [1-2]: " version_choice
|
||||||
|
done
|
||||||
|
if [[ "$version_choice" == "1" ]]; then
|
||||||
|
tag_version="$latest_stable"
|
||||||
|
else
|
||||||
|
tag_version="$latest_prerelease"
|
||||||
|
fi
|
||||||
|
elif [[ -n "$latest_stable" ]]; then
|
||||||
|
tag_version="$latest_stable"
|
||||||
|
else
|
||||||
|
tag_version="$latest_prerelease"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
update_x-ui() {
|
update_x-ui() {
|
||||||
cd ${xui_folder%/x-ui}/
|
cd ${xui_folder%/x-ui}/
|
||||||
|
|
||||||
|
|
@ -757,15 +798,9 @@ update_x-ui() {
|
||||||
|
|
||||||
echo -e "${green}Downloading new x-ui version...${plain}"
|
echo -e "${green}Downloading new x-ui version...${plain}"
|
||||||
|
|
||||||
tag_version=$(${curl_bin} -Ls "https://api.github.com/repos/Sora39831/3x-ui/releases/latest" 2>/dev/null | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
get_releases
|
||||||
if [[ ! -n "$tag_version" ]]; then
|
select_version
|
||||||
echo -e "${yellow}Trying to fetch version with IPv4...${plain}"
|
echo -e "Got x-ui version: ${tag_version}, beginning the installation..."
|
||||||
tag_version=$(${curl_bin} -4 -Ls "https://api.github.com/repos/Sora39831/3x-ui/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
|
||||||
if [[ ! -n "$tag_version" ]]; then
|
|
||||||
_fail "ERROR: Failed to fetch x-ui version, it may be due to GitHub API restrictions, please try it later"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo -e "Got x-ui latest version: ${tag_version}, beginning the installation..."
|
|
||||||
${curl_bin} -fLRo ${xui_folder}-linux-$(arch).tar.gz https://github.com/Sora39831/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz 2>/dev/null
|
${curl_bin} -fLRo ${xui_folder}-linux-$(arch).tar.gz https://github.com/Sora39831/3x-ui/releases/download/${tag_version}/x-ui-linux-$(arch).tar.gz 2>/dev/null
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -ne 0 ]]; then
|
||||||
echo -e "${yellow}Trying to fetch version with IPv4...${plain}"
|
echo -e "${yellow}Trying to fetch version with IPv4...${plain}"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue