blob: 40d7c21f4d2ca66b2a9e64e98e611a1b3315d2e4 (
plain) (
tree)
|
|
#!/usr/bin/env python3
import hashlib
import requests
import os
import shutil
import sys
# Initalize from config
INSTALL_DIR = ""
with open("pack-location.txt", "r") as f:
INSTALL_DIR = f.read().strip()
def apply_updates():
print("Updating pack...")
# (fname, url)
mods = []
# Set of jar file names
names = set()
with open("downloads.txt", "r") as f:
for line in f:
dl = line.strip().split(" ")
if len(line) > 3 and len(dl) == 2 and line[0] != '#':
dl[0] = dl[0].strip()
dl[1] = dl[1].strip()
mods.append(dl)
names.add(dl[0])
for mod in mods:
if mod[0] in os.listdir(INSTALL_DIR):
print("Skipping " + mod[0] + ", already up to date")
else:
print("Installing " + mod[0] + " from " + mod[1] + "...")
download_obj = requests.get(mod[1], stream=True)
with open(os.path.join(INSTALL_DIR, mod[0]), "wb") as write_file:
shutil.copyfileobj(download_obj.raw, write_file)
print("Done!")
print("\nRemoving old versions...")
for jar in os.listdir(INSTALL_DIR):
if jar not in names and os.path.splitext(jar)[1] == ".jar":
os.remove(os.path.join(INSTALL_DIR, jar))
print(f"Removing '{jar}'")
print("\nFinished updating pack!")
def find_updates():
print("Reading update file...")
mods = set()
with open('updates.txt') as f:
for line in f:
mod = line.strip().split()
if len(line) > 3 and len(mod) == 2 and line[0] != '#':
# run strip on each element
mod = tuple(map(lambda x: x.strip(), mod))
mods.add(mod)
print("Downloading new versions of all mods...")
with open('downloads.txt', 'w') as f:
f.write('# Format: <jarname> <hex digested sha1> <direct download url>\n')
for mod in mods:
resp = requests.get(mod[1])
hsh = hashlib.sha1(resp.content)
f.write(f'{mod[0]} {hsh.hexdigest()} {resp.url}\n')
if len(sys.argv) < 2:
print(f"Usage: {sys.argv[0]} <update|find_updates>")
sys.exit(-1)
elif sys.argv[1] == 'update':
update()
elif sys.argv[1] == 'find_updates':
find_updates()
else:
print(f"Usage: {sys.argv[0]} <update|find_updates>")
sys.exit(-1)
|