From cc19a6dda838720ecede3d4d5610d8d0675b8e04 Mon Sep 17 00:00:00 2001 From: Alexander Hayden Date: Tue, 29 Jan 2019 23:43:40 -0500 Subject: Add `check_updates` --- readme.md | 2 +- update.py | 40 ++++++++++++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index 355c553..80f43cd 100644 --- a/readme.md +++ b/readme.md @@ -5,4 +5,4 @@ Script to update modpacks automatically #### To Use -Simply put the location of your `mods` folder in `pack-location.txt` and run `python update.py apply_updates` +Simply put the location of your `mods` folder in `pack-location.txt` and run `python update.py install` diff --git a/update.py b/update.py index 5e23f37..70f3d51 100755 --- a/update.py +++ b/update.py @@ -12,7 +12,7 @@ with open("pack-location.txt", "r") as f: # Apply updates to the actual mod pack -def apply_updates(): +def install(): print("Updating pack...") # (fname, url) mods = [] @@ -31,7 +31,7 @@ def apply_updates(): if mod[0] in os.listdir(INSTALL_DIR) and hashlib.sha1(open(os.path.join(INSTALL_DIR, mod[0]), 'rb').read()).hexdigest() == mod[1]: print("Skipping " + mod[0] + ", already up to date") else: - print("Installing " + mod[0] + " from " + mod[1] + "...") + print(f'Installing {mod[0]} from {mod[2]}...') download_obj = requests.get(mod[2], stream=True) with open(os.path.join(INSTALL_DIR, mod[0]), "wb") as write_file: shutil.copyfileobj(download_obj.raw, write_file) @@ -47,7 +47,7 @@ def apply_updates(): # Using the latest urls, update downloads.txt to match the urls and have the correct sha1 -def find_updates(): +def apply_updates(): print("Reading update file...") mods = set() with open('latest-urls.txt') as f: @@ -67,14 +67,42 @@ def find_updates(): f.write(f'{mod[0]} {hsh.hexdigest()} {resp.url}\n') print("\nDone downloading updates!") +# Find if any updates are available +def check_updates(): + print("Reading update files...") + latest_urls = {} + with open('latest-urls.txt') as f: + for line in f: + mod = line.strip().split() + if len(line) >= 1 and line[0] != '#': + # run strip on each element + mod = tuple(map(lambda x: x.strip(), mod)) + latest_urls[mod[0]] = mod[1] + old_urls = {} + with open('downloads.txt') as f: + for line in f: + mod = line.strip().split() + if len(line) >= 1 and line[0] != '#': + # run strip on each element + mod = tuple(map(lambda x: x.strip(), mod)) + old_urls[mod[0]] = mod[2] + print("Checking updates...\nThe following mods have updates available:\n") + for mod in latest_urls: + resp = requests.get(latest_urls[mod]) + if resp.url != old_urls[mod]: + print(f" -> Found update for {mod}!") + print("Finished checking for updates!") + if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} ") sys.exit(-1) +elif sys.argv[1] == 'install': + install() elif sys.argv[1] == 'apply_updates': apply_updates() -elif sys.argv[1] == 'find_updates': - find_updates() +elif sys.argv[1] == 'check_updates': + check_updates() else: - print(f"Usage: {sys.argv[0]} ") + print(f"Usage: {sys.argv[0]} ") sys.exit(-1) -- cgit v1.2.3