|
|
|
@ -3,14 +3,17 @@
|
|
|
|
|
import parsers.paperMC
|
|
|
|
|
import argparse
|
|
|
|
|
import shutil
|
|
|
|
|
import hashlib
|
|
|
|
|
from os import error
|
|
|
|
|
parser = argparse.ArgumentParser(description='A command-line tool to update a Minecraft Server.')
|
|
|
|
|
parser.add_argument('api', metavar='api', help='which API to use')
|
|
|
|
|
parser.add_argument('project', metavar='project', help='which project to query for')
|
|
|
|
|
parser.add_argument('action', metavar='action', help='what action to execute')
|
|
|
|
|
parser.add_argument('subAction', metavar='subAction', help='what sub action to execute')
|
|
|
|
|
parser.add_argument('-o', nargs="?", help='Optional: Specify output filepath')
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
print("mcUp.py, written by Caleb Fontenot")
|
|
|
|
|
|
|
|
|
|
print(args.o)
|
|
|
|
|
# PaperMC command functions
|
|
|
|
|
def paperMC(project, action, subAction):
|
|
|
|
|
if action == "get":
|
|
|
|
@ -24,27 +27,27 @@ def paperMC(project, action, subAction):
|
|
|
|
|
if subAction == "latest":
|
|
|
|
|
latestVersion = parsers.paperMC.getLatest(project)
|
|
|
|
|
output = parsers.paperMC.getJarInfo(project, latestVersion)
|
|
|
|
|
print(output["name"])
|
|
|
|
|
if args.o != None: # Check if user set an output filepath
|
|
|
|
|
output_file = args.o
|
|
|
|
|
else:
|
|
|
|
|
output_file = output["name"]
|
|
|
|
|
with parsers.paperMC.downloadVersion(project, latestVersion) as raw:
|
|
|
|
|
with open(output["name"], 'wb') as file_object:
|
|
|
|
|
with open(output_file, 'wb') as file_object:
|
|
|
|
|
shutil.copyfileobj(raw.raw, file_object)
|
|
|
|
|
print("Downloaded "+latestVersion+" to "+output["name"])
|
|
|
|
|
print("Downloaded "+latestVersion+" to "+output_file)
|
|
|
|
|
#Calculate hash, compare with API given hash
|
|
|
|
|
h_sha256 = hashlib.sha256()
|
|
|
|
|
with open(output_file, 'rb') as file_object:
|
|
|
|
|
chunk = 0
|
|
|
|
|
while chunk != b'':
|
|
|
|
|
chunk = file_object.read(1024)
|
|
|
|
|
h_sha256.update(chunk)
|
|
|
|
|
if h_sha256.hexdigest() == output["sha256"]:
|
|
|
|
|
print("sha256sum of downloaded file matches the sum that the API gave, jar is safe to use")
|
|
|
|
|
else:
|
|
|
|
|
raise error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#latestVersion = parsers.paperMC.getLatest(project)
|
|
|
|
|
#jarInfo = parsers.paperMC.getJarInfo(project, latestVersion)
|
|
|
|
|
#print(jarInfo)
|
|
|
|
|
#print(jarInfo[0])
|
|
|
|
|
#print(type(jarInfo))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#print(type(getVersionVelocity))
|
|
|
|
|
|
|
|
|
|
#print("Latest build of velocity is", parsers.paperMC.getLatest#("velocity"))
|
|
|
|
|
|
|
|
|
|
# Determine which API to use:
|
|
|
|
|
if args.api == "paperMC":
|
|
|
|
|
paperMC(args.project, args.action, args.subAction)
|
|
|
|
|