From f611689077f09b8c35ed0924d12eb47f0f9a4132 Mon Sep 17 00:00:00 2001 From: SBDeveloper Date: Fri, 21 Mar 2025 10:36:13 +0100 Subject: [PATCH] Fixed refresh script, changed versions --- .internal/Sources/refresh.py | 71 ++++++++++++++---- .internal/Sources/versions_v2.txt | 3 +- .internal/Sources/versions_v3.txt | 3 - .../Examples-v3/VPExample-v3-1.21.4.zip | Bin 345837 -> 344579 bytes 4 files changed, 56 insertions(+), 21 deletions(-) diff --git a/.internal/Sources/refresh.py b/.internal/Sources/refresh.py index 6c81ca5..d67b2dc 100644 --- a/.internal/Sources/refresh.py +++ b/.internal/Sources/refresh.py @@ -6,6 +6,7 @@ import subprocess import tempfile from pathlib import Path import argparse +import os # Load configuration from config.ini config = configparser.ConfigParser() @@ -109,21 +110,29 @@ def update_setup_file(setup_file_path, zip_files, base_url): with open(setup_file_path, 'r') as file: lines = file.readlines() - table_header_found = False - table_alignment_found = False + # Find the table in the setup.md file table_start_index = None table_end_index = None - # Identify the table header and alignment rows + # Look for a line containing "Version" and "Download" and "SHA1" to identify the table header for index, line in enumerate(lines): - if line.strip() == '| Version | Download | SHA1 Hash |': - table_header_found = True + if '|' in line and 'Version' in line and 'Download' in line and 'SHA1' in line: table_start_index = index - elif table_header_found and line.strip() == '|:---:|:---:|---|': - table_alignment_found = True - elif table_header_found and table_alignment_found and line.strip() == '': - table_end_index = index - break + # The next line should be the alignment row + if index + 1 < len(lines) and '|:' in lines[index + 1]: + # Find the end of the table - look for the next line that doesn't start with '|' + for end_index in range(index + 2, len(lines)): + if not lines[end_index].strip().startswith('|'): + table_end_index = end_index + break + # If we reached the end of the file + if table_end_index is None: + table_end_index = len(lines) + break + + print(f"Table detected: start={table_start_index}, end={table_end_index}") + + new_lines = lines # Initialize new_lines to avoid UnboundLocalError if table_start_index is not None and table_end_index is not None: # Prepare to insert new rows @@ -163,18 +172,48 @@ def update_setup_file(setup_file_path, zip_files, base_url): else: print("No new rows to add.") + # Get the last modification time of setup.md + setup_mtime = os.path.getmtime(setup_file_path) + + # Recalculate SHA1 for all ZIP files + for zip_file in zip_files: + version = extract_version_info(zip_file) + if version: + # Check if ZIP file was modified after setup.md + if os.path.getmtime(zip_file) > setup_mtime: + new_sha1 = calculate_sha1(zip_file) + # Find and update the corresponding line + for i, line in enumerate(new_lines): + if version in line and 'Click here' in line: + # Update the SHA1 checksum in the line + new_lines[i] = re.sub(r'`[a-f0-9]{40}`', f'`{new_sha1}`', line) + print(f"Force updating {version} due to file modification") + break + with open(setup_file_path, 'w') as file: + print(f'Writing {len(new_lines)} lines to {setup_file_path}') file.writelines(new_lines) + # Verify changes + with open(setup_file_path, 'r') as file: + content = file.read() + print(f'Current content of {setup_file_path}:\n{content}') + def commit_and_push_changes(): """Commit and push changes to the repository.""" print(f"Committing and pushing changes to {REPO_DIR}") + # Add the file to the index run_command(f'cd {REPO_DIR} && git add {SETUP_FILE_PATH}') - result = run_command(f'cd {REPO_DIR} && git commit -m "Update vehicle setup file with correct paths and SHA1 checksums"') - if 'nothing to commit' in result: - print("No changes detected.") - else: - run_command(f'cd {REPO_DIR} && git push origin {BRANCH}') + + # Check if there are changes to commit + status = run_command(f'cd {REPO_DIR} && git status --porcelain') + if not status.strip(): + print("No changes to commit.") + return + + # Commit and push if there are changes + run_command(f'cd {REPO_DIR} && git commit -m "Update vehicle setup file with correct paths and SHA1 checksums"') + run_command(f'cd {REPO_DIR} && git push origin {BRANCH}') def cleanup(): """Remove the temp directory.""" @@ -189,7 +228,7 @@ def main(): paths = get_version_paths(args.version) global REPO_URL, REPO_DIR, SETUP_FILE_PATH, RESOURCE_PACK_DIR, BASE_URL, VERSIONS_FILE_PATH - REPO_URL = f'https://{USERNAME}:{PASSWORD}@git.sbdevelopment.tech/SBDevelopment/docs' + REPO_URL = f'https://{USERNAME}:{PASSWORD}@git.sbdevelopment.tech/SBDevelopment/SBDocs' REPO_DIR = tempfile.mkdtemp() SETUP_FILE_PATH = paths['setup_file_path'] RESOURCE_PACK_DIR = paths['resource_pack_dir'] diff --git a/.internal/Sources/versions_v2.txt b/.internal/Sources/versions_v2.txt index b020406..71490f9 100644 --- a/.internal/Sources/versions_v2.txt +++ b/.internal/Sources/versions_v2.txt @@ -12,5 +12,4 @@ 22#1.20.3-1.20.4 32#1.20.5-1.20.6 34#1.21-1.21.1 -42#1.21.2-1.21.3 -46#1.21.4 \ No newline at end of file +42#1.21.2-1.21.3 \ No newline at end of file diff --git a/.internal/Sources/versions_v3.txt b/.internal/Sources/versions_v3.txt index 83f0b07..0f08429 100644 --- a/.internal/Sources/versions_v3.txt +++ b/.internal/Sources/versions_v3.txt @@ -1,6 +1,3 @@ -4#1.13.2-1.14.4 -5#1.15.2-1.16.1 -6#1.16.2-1.16.5 7#1.17-1.17.1 8#1.18-1.18.2 9#1.19-1.19.2 diff --git a/ResourcePacks/Examples-v3/VPExample-v3-1.21.4.zip b/ResourcePacks/Examples-v3/VPExample-v3-1.21.4.zip index 84d1db647172461f0e5d51512d7e5b4918e1cda6..f4c8bd8d835de1fcbe47407155842017b11773a5 100644 GIT binary patch delta 14385 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 M0RV$1&_V_HfAq_|SO5S3