Fix self update
This commit is contained in:
parent
8ab5b31fd3
commit
505a6a8ad5
1 changed files with 53 additions and 28 deletions
81
start.sh
81
start.sh
|
@ -7,7 +7,7 @@
|
||||||
# and acknowledge the original script and author. #
|
# and acknowledge the original script and author. #
|
||||||
#############################################################################################################
|
#############################################################################################################
|
||||||
|
|
||||||
CURRENT_VERSION="1.0.0"
|
CURRENT_VERSION="v1.0.0"
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# You shouldn't need to change anything in this file
|
# You shouldn't need to change anything in this file
|
||||||
|
@ -356,13 +356,50 @@ function launch_server {
|
||||||
java $java_launchoptions -jar "$(basename ./paper-*.jar)" $mc_launchoptions
|
java $java_launchoptions -jar "$(basename ./paper-*.jar)" $mc_launchoptions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Download the update for the script
|
||||||
|
function self_update {
|
||||||
|
# Download the latest version of the script
|
||||||
|
echo "Updating script..."
|
||||||
|
# Download the file into start_new.sh
|
||||||
|
curl -sLJ -w '%{http_code}\n' "https://github.com/$REPO_OWNER/$REPO_NAME/releases/download/$LATEST_VERSION/start.sh" > start_new.sh
|
||||||
|
# Check if the download was successful by checking the last line of the file for 200
|
||||||
|
if [[ $(cat start_new.sh | tail -n 1) == 200 ]]; then
|
||||||
|
# Remove the last line of the file
|
||||||
|
sed -i '$d' start_new.sh
|
||||||
|
# Make the file executable
|
||||||
|
chmod +x start_new.sh
|
||||||
|
# Remove the old script
|
||||||
|
rm start.sh
|
||||||
|
echo "Removed old script"
|
||||||
|
# Rename the new script
|
||||||
|
mv start_new.sh start.sh
|
||||||
|
echo "Renamed new script"
|
||||||
|
echo "Script updated successfully."
|
||||||
|
echo
|
||||||
|
read -p "Do you want to restart the script? [y/N] " restart
|
||||||
|
if [ "$restart" == "y" ] || [ "$restart" == "Y" ]; then
|
||||||
|
echo "Restarting..."
|
||||||
|
# Execute the new script
|
||||||
|
exec "./start.sh" "$@"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "Exiting..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Failed to update script."
|
||||||
|
rm start_new.sh
|
||||||
|
exit 5
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Function to update the script
|
# Function to update the script
|
||||||
function check_self_update {
|
function check_self_update {
|
||||||
# Send a request to the GitHub API to retrieve the latest release
|
# Send a request to the GitHub API to retrieve the latest release
|
||||||
response=$(curl -sL "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest")
|
response=$(curl -sL "https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases/latest")
|
||||||
|
|
||||||
# Extract the latest version from the response
|
# Extract the latest version from the response
|
||||||
LATEST_VERSION=$($response | jq -r ".tag_name")
|
LATEST_VERSION=$(echo $response | jq -r ".tag_name")
|
||||||
|
|
||||||
# Compare the current version with the latest version
|
# Compare the current version with the latest version
|
||||||
if [[ "$CURRENT_VERSION" != "$LATEST_VERSION" ]]; then
|
if [[ "$CURRENT_VERSION" != "$LATEST_VERSION" ]]; then
|
||||||
|
@ -370,7 +407,8 @@ function check_self_update {
|
||||||
echo "Current version: $CURRENT_VERSION"
|
echo "Current version: $CURRENT_VERSION"
|
||||||
echo "Latest version: $LATEST_VERSION"
|
echo "Latest version: $LATEST_VERSION"
|
||||||
echo
|
echo
|
||||||
echo "The script will continue in 15 seconds."
|
echo "The script will continue without updating in 15 seconds."
|
||||||
|
echo "If you decide to update it is your responsibility to check the release notes for any breaking changes."
|
||||||
read -t 15 -p "Do you want to read the release notes? [y/N]"
|
read -t 15 -p "Do you want to read the release notes? [y/N]"
|
||||||
if [ "$REPLY" == "y" ] || [ "$REPLY" == "Y" ]; then
|
if [ "$REPLY" == "y" ] || [ "$REPLY" == "Y" ]; then
|
||||||
# Extract the release notes from the response
|
# Extract the release notes from the response
|
||||||
|
@ -380,47 +418,29 @@ function check_self_update {
|
||||||
echo "$RELEASE_NOTES" | less
|
echo "$RELEASE_NOTES" | less
|
||||||
|
|
||||||
# Ask the user if they want to update
|
# Ask the user if they want to update
|
||||||
echo "The script will continue in 15 seconds."
|
echo "The script will continue without updating in 15 seconds."
|
||||||
echo "If you decide to update it is your responsibility to check the release notes for any breaking changes."
|
echo "If you decide to update it is your responsibility to check the release notes for any breaking changes."
|
||||||
read -t 15 -p "Do you want to update? [y/N] " update
|
read -t 15 -p "Do you want to update? [y/N] " update
|
||||||
if [ "$update" == "y" ] || [ "$update" == "Y" ]; then
|
if [ "$update" == "y" ] || [ "$update" == "Y" ]; then
|
||||||
download_self_update
|
self_update
|
||||||
else
|
else
|
||||||
echo "Skipping update."
|
echo "Skipping update."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Download the update for the script
|
|
||||||
function self_update {
|
|
||||||
# Download the latest version of the script
|
|
||||||
echo "Updating script..."
|
|
||||||
if curl --fail -sLJO "https://github.com/$REPO_OWNER/$REPO_NAME/releases/download/$LATEST_VERSION/start.sh"; then
|
|
||||||
chmod +x script.sh
|
|
||||||
echo "Script updated successfully."
|
|
||||||
echo
|
|
||||||
read -p "Do you want to restart the script? [y/N] " restart
|
|
||||||
if [ "$restart" == "y" ] || [ "$restart" == "Y" ]; then
|
|
||||||
echo "Restarting..."
|
|
||||||
exec "./script.sh" "$@"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "Exiting..."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Failed to update script."
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load config
|
# Load config
|
||||||
function load_config {
|
function load_config {
|
||||||
# Check if the config file exists
|
# Check if the config file exists
|
||||||
if [ ! -f launch.cfg ]; then
|
if [ ! -f launch.cfg ]; then
|
||||||
|
sed -i '$d' launch.cfg
|
||||||
echo "Config file does not exist."
|
echo "Config file does not exist."
|
||||||
echo "Downloading the default config file..."
|
echo "Downloading the default config file..."
|
||||||
if curl --fail -sLJO "https://github.com/$REPO_OWNER/$REPO_NAME/releases/download/$CURRENT_VERSION/launch.cfg"; then
|
curl -sLJO -w '%{http_code}' "https://github.com/$REPO_OWNER/$REPO_NAME/releases/download/$LATEST_VERSION/start.sh" > start_new.sh
|
||||||
|
if [[ $(cat launch.cfg | tail -n 1) == 200 ]]; then
|
||||||
|
|
||||||
echo
|
echo
|
||||||
read -p "Do you want to edit the config file? [y/N] " edit_config
|
read -p "Do you want to edit the config file? [y/N] " edit_config
|
||||||
if [ "$edit_config" == "y" ] || [ "$edit_config" == "Y" ]; then
|
if [ "$edit_config" == "y" ] || [ "$edit_config" == "Y" ]; then
|
||||||
|
@ -452,6 +472,9 @@ function main {
|
||||||
# Check for script updates
|
# Check for script updates
|
||||||
check_self_update
|
check_self_update
|
||||||
|
|
||||||
|
# Load config
|
||||||
|
load_config
|
||||||
|
|
||||||
# Check dependencies
|
# Check dependencies
|
||||||
check_dependencies
|
check_dependencies
|
||||||
|
|
||||||
|
@ -474,7 +497,8 @@ function main {
|
||||||
# Check for updates on GitHub
|
# Check for updates on GitHub
|
||||||
if [[ "$1" == "--redownload" ]]; then
|
if [[ "$1" == "--redownload" ]]; then
|
||||||
self_update
|
self_update
|
||||||
else if [[ "$1" == "--help" ]]; then
|
fi
|
||||||
|
if [[ "$1" == "--help" ]]; then
|
||||||
echo "Usage: ./script.sh [OPTION]"
|
echo "Usage: ./script.sh [OPTION]"
|
||||||
echo "Starts the Minecraft server."
|
echo "Starts the Minecraft server."
|
||||||
echo
|
echo
|
||||||
|
@ -487,6 +511,7 @@ else if [[ "$1" == "--help" ]]; then
|
||||||
echo
|
echo
|
||||||
echo "For more information, see:"
|
echo "For more information, see:"
|
||||||
echo "https://github.com/$GITHUB_USER/$GITHUB_REPO"
|
echo "https://github.com/$GITHUB_USER/$GITHUB_REPO"
|
||||||
|
exit 0
|
||||||
else
|
else
|
||||||
# Run the main function
|
# Run the main function
|
||||||
main
|
main
|
||||||
|
|
Loading…
Reference in a new issue