release.py now checks to make sure file hash is correct; release.py now asks the user to review the filepath and release title are correct
This commit is contained in:
parent
ca6ed447e6
commit
8e4f91ada2
44
release.py
44
release.py
@ -3,6 +3,7 @@ import re
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
from hashlib import sha256
|
||||||
from github import Github
|
from github import Github
|
||||||
import json
|
import json
|
||||||
from datetime import timezone
|
from datetime import timezone
|
||||||
@ -13,6 +14,7 @@ parser = argparse.ArgumentParser(description="Make a new ripme release on github
|
|||||||
parser.add_argument("-f", "--file", help="Path to the version of ripme to release")
|
parser.add_argument("-f", "--file", help="Path to the version of ripme to release")
|
||||||
parser.add_argument("-t", "--token", help="Your github personal access token")
|
parser.add_argument("-t", "--token", help="Your github personal access token")
|
||||||
parser.add_argument("-d", "--debug", help="Run in debug mode", action="store_true")
|
parser.add_argument("-d", "--debug", help="Run in debug mode", action="store_true")
|
||||||
|
parser.add_argument("-n", "--non-interactive", help="Do not ask for any input from the user", action="store_true")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
@ -23,6 +25,8 @@ def isJar(filename):
|
|||||||
return filename.endswith("jar")
|
return filename.endswith("jar")
|
||||||
|
|
||||||
|
|
||||||
|
# Returns true if last entry to the "changeList" section of ripme.json is in the format of $number.$number.$number: and
|
||||||
|
# false if not
|
||||||
def isValidCommitMessage(message):
|
def isValidCommitMessage(message):
|
||||||
if debug:
|
if debug:
|
||||||
print("Checking if {} matchs pattern ^\d+\.\d+\.\d+:".format(message))
|
print("Checking if {} matchs pattern ^\d+\.\d+\.\d+:".format(message))
|
||||||
@ -30,19 +34,41 @@ def isValidCommitMessage(message):
|
|||||||
return re.match(pattern, message)
|
return re.match(pattern, message)
|
||||||
|
|
||||||
|
|
||||||
fileToUpload = args.file
|
ripmeJson = json.loads(open("ripme.json").read())
|
||||||
commitMessage = json.loads(open("ripme.json").read()).get("changeList")[0]
|
fileToUploadPath = args.file
|
||||||
|
InNoninteractiveMode = args.non_interactive
|
||||||
|
commitMessage = ripmeJson.get("changeList")[0]
|
||||||
debug = args.debug
|
debug = args.debug
|
||||||
|
|
||||||
|
if not os.path.isfile(fileToUploadPath):
|
||||||
if not os.path.isfile(fileToUpload):
|
print("[!] Error: {} does not exist".format(fileToUploadPath))
|
||||||
print("[!] Error: {} does not exist".format(fileToUpload))
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not isJar(fileToUpload):
|
if not isJar(fileToUploadPath):
|
||||||
print("[!] Error: {} is not a jar file!".format(fileToUpload))
|
print("[!] Error: {} is not a jar file!".format(fileToUploadPath))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not isValidCommitMessage(commitMessage):
|
if not isValidCommitMessage(commitMessage):
|
||||||
print("[!] Error: {} is not a valid commit message as it does not start with a version".format(fileToUpload))
|
print("[!] Error: {} is not a valid commit message as it does not start with a version".format(fileToUploadPath))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
ripmeUpdate = open(fileToUploadPath, mode='rb').read()
|
||||||
|
|
||||||
|
# The hash that we expect the update to have
|
||||||
|
expectedHash = ripmeJson.get("currentHash")
|
||||||
|
|
||||||
|
# The actual hash of the file on disk
|
||||||
|
actualHash = sha256(ripmeUpdate).hexdigest()
|
||||||
|
|
||||||
|
# Make sure that the hash of the file we're uploading matches the hash in ripme.json. These hashes not matching will
|
||||||
|
# cause ripme to refuse to install the update for all users who haven't disabled update hash checking
|
||||||
|
if expectedHash != actualHash:
|
||||||
|
print("[!] Error: expected hash of file and actual hash differ")
|
||||||
|
print("[!] Expected hash is {}".format(expectedHash))
|
||||||
|
print("[!] Actual hash is {}".format(actualHash))
|
||||||
|
|
||||||
|
# This only runs in we're in interactive mode
|
||||||
|
if not InNoninteractiveMode:
|
||||||
|
print("File path: {}\n".format(fileToUploadPath))
|
||||||
|
print("Release title: {}".format(commitMessage))
|
||||||
|
input("\nPlease review the information above and ensure it is correct and then press enter")
|
Loading…
Reference in New Issue
Block a user