diff --git a/meta/common/__init__.py b/meta/common/__init__.py index d7ee49a..16a4f50 100644 --- a/meta/common/__init__.py +++ b/meta/common/__init__.py @@ -86,3 +86,12 @@ def default_session(): sess.headers.update({"User-Agent": "PrismLauncherMeta/1.0"}) return sess + + +def remove_files(file_paths): + for file_path in file_paths: + try: + if os.path.isfile(file_path): + os.remove(file_path) + except Exception as e: + print(e) diff --git a/meta/run/update_forge.py b/meta/run/update_forge.py index 8fc8920..5a86727 100755 --- a/meta/run/update_forge.py +++ b/meta/run/update_forge.py @@ -16,7 +16,12 @@ from pydantic import ValidationError -from meta.common import upstream_path, ensure_upstream_dir, default_session +from meta.common import ( + upstream_path, + ensure_upstream_dir, + default_session, + remove_files, +) from meta.common.forge import ( JARS_DIR, INSTALLER_INFO_DIR, @@ -292,6 +297,19 @@ def main(): UPSTREAM_DIR + "/forge/version_manifests/%s.json" % version.long_version ) + if not os.path.isfile(jar_path): + remove_files([profile_path, installer_info_path]) + else: + fileSha1 = filehash(jar_path, hashlib.sha1) + try: + rfile = sess.get(version.url() + ".sha1") + rfile.raise_for_status() + if fileSha1 != rfile.text.strip(): + remove_files([jar_path, profile_path, installer_info_path]) + except Exception as e: + eprint("Failed to check sha1 %s" % version.url()) + eprint("Error is %s" % e) + installer_refresh_required = not os.path.isfile( profile_path ) or not os.path.isfile(installer_info_path) diff --git a/meta/run/update_neoforge.py b/meta/run/update_neoforge.py index 60b94ec..c6eb0f3 100644 --- a/meta/run/update_neoforge.py +++ b/meta/run/update_neoforge.py @@ -17,7 +17,12 @@ from pydantic import ValidationError -from meta.common import upstream_path, ensure_upstream_dir, default_session +from meta.common import ( + upstream_path, + ensure_upstream_dir, + default_session, + remove_files, +) from meta.common.neoforge import ( JARS_DIR, INSTALLER_INFO_DIR, @@ -243,6 +248,19 @@ def main(): UPSTREAM_DIR + "/neoforge/version_manifests/%s.json" % version.long_version ) + if not os.path.isfile(jar_path): + remove_files([profile_path, installer_info_path]) + else: + fileSha1 = filehash(jar_path, hashlib.sha1) + try: + rfile = sess.get(version.url() + ".sha1") + rfile.raise_for_status() + if fileSha1 != rfile.text.strip(): + remove_files([jar_path, profile_path, installer_info_path]) + except Exception as e: + eprint("Failed to check sha1 %s" % version.url()) + eprint("Error is %s" % e) + installer_refresh_required = not os.path.isfile( profile_path ) or not os.path.isfile(installer_info_path) diff --git a/update.sh b/update.sh index 8e0fe38..5054301 100755 --- a/update.sh +++ b/update.sh @@ -33,6 +33,7 @@ function launcher_git() { currentDate=$(date -I) upstream_git reset --hard HEAD || exit 1 +upstream_git pull python -m meta.run.update_mojang || fail_in python -m meta.run.update_forge || fail_in @@ -57,6 +58,7 @@ if [ "${DEPLOY_TO_GIT}" = true ]; then fi launcher_git reset --hard HEAD || exit 1 +launcher_git pull python -m meta.run.generate_mojang || fail_out python -m meta.run.generate_forge || fail_out