diff --git a/GameUpdate_linux.sh b/GameUpdate_linux.sh index aae857a..b711d41 100644 --- a/GameUpdate_linux.sh +++ b/GameUpdate_linux.sh @@ -7,40 +7,69 @@ function check_dependency() { fi } -# --- Dependency Checks --- -check_dependency git -check_dependency awk +# Check for jq and unzip +check_dependency jq +check_dependency unzip -# --- Configuration --- CONFIG_FILE="patch-config.txt" +# Check if CONFIG_FILE exists if [ ! -f "$CONFIG_FILE" ]; then - echo "Config file ('$CONFIG_FILE') not found! Assuming no patching needed." - exit 0 + echo "Config file '$CONFIG_FILE' not found! Assuming no patching needed." + exit 0 fi -# Convert line endings to Unix format using sed (didn't want to add another dependency in dos2unix) +# Convert line endings to Unix format sed -i 's/\r$//' "$CONFIG_FILE" +# Read configuration from file source "$CONFIG_FILE" -# --- Input Validation --- -if [[ -z "$username" || -z "$repo" || -z "$branch" ]]; then - echo "Error: Missing username, repo, or branch in config file ('$CONFIG_FILE')." - exit 1 +# Get the latest hash +echo "Getting latest commit SHA hash" +latest_patch_sha=$(curl -s "https://gitgud.io/api/v4/projects/$username%2F$repo/repository/branches/$branch" | jq -r '.commit.id') + +function download_extract() { + # Download zip file + echo "Downloading latest patch..." + curl -sL "https://gitgud.io/$username/$repo/-/archive/$branch/$repo-$branch.zip" -o repo.zip + + # Extract contents, overwriting conflicts + echo "Extracting..." + unzip -qo repo.zip + echo "Applying patch..." + if [ -d "$repo-$branch/"www ]; then + cp -r "$repo-$branch/"* . + jq --arg repo "$repo" 'if (.name | test("^[[:space:]]*$")) then .name = $repo else . end' package.json > package.json + else + cp -r "$repo-$branch/"* ./www + fi + + echo "Cleaning up..." + rm repo.zip + rm -rf "$repo-$branch" + rm latest_patch_sha.txt + + # Store latest SHA for next check + echo "$latest_patch_sha" > previous_patch_sha.txt +} + +# Check if previous_patch_sha.txt exists +if [ ! -f previous_patch_sha.txt ]; then + echo "Previous SHA hash not found!" + echo "Assuming first time patching..." + download_extract +else + # Read the stored SHA from previous check + previous_patch_sha=$( latest_patch_sha.txt + +REM Read the latest SHA from the file +set /p latest_patch_sha= previous_patch_sha.txt endlocal pause -exit /b \ No newline at end of file +exit /b