diff --git a/release.py b/release.py index 9b199bf6..04ad7e08 100644 --- a/release.py +++ b/release.py @@ -15,7 +15,8 @@ parser.add_argument("-f", "--file", help="Path to the version of ripme to releas 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("-n", "--non-interactive", help="Do not ask for any input from the user", action="store_true") -parser.add_argument("--test", help="Perform a dry run", action="store_true") +parser.add_argument("--test", help="Perform a dry run (Do everything but upload new release)", action="store_true") +parser.add_argument("--skip-hash-check", help="Skip hash check (This should only be used for testing)", action="store_true") args = parser.parse_args() try: @@ -40,8 +41,10 @@ def isValidCommitMessage(message): pattern = re.compile("^\d+\.\d+\.\d+:") return re.match(pattern, message) + # Checks if the update has the name ripme.jar, if not it renames the file # Returns the update file path +# TODO handle files that aren't in sub dirs def renameFile(path): if not path.endswith("ripme.jar"): print("Specified file is not named ripme.jar, renaming") @@ -51,7 +54,6 @@ def renameFile(path): return path - ripmeJson = json.loads(open("ripme.json").read()) fileToUploadPath = renameFile(args.file) InNoninteractiveMode = args.non_interactive @@ -74,23 +76,27 @@ if not isValidCommitMessage(commitMessage): print("[!] Error: {} is not a valid commit message as it does not start with a version".format(fileToUploadPath)) sys.exit(1) -ripmeUpdate = open(fileToUploadPath, mode='rb').read() -# The actual hash of the file on disk -actualHash = sha256(ripmeUpdate).hexdigest() +if not args.skip_hash_check: + if debug: + print("Reading file {}".format(fileToUploadPath)) + 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() + # The hash that we expect the update to have + expectedHash = ripmeJson.get("currentHash") -# 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)) - sys.exit(1) - + # 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)) + sys.exit(1) +else: + print("[*] WARNING: SKIPPING HASH CHECK") # Ask the user to review the information before we precede # This only runs in we're in interactive mode if not InNoninteractiveMode: @@ -99,7 +105,7 @@ if not InNoninteractiveMode: print("Repo: {}/{}".format(repoOwner, repoName)) input("\nPlease review the information above and ensure it is correct and then press enter") -if args.test: +if not args.test: print("Accessing github using token") g = Github(accessToken) @@ -108,3 +114,5 @@ if args.test: print("Uploading file") release.upload_asset(fileToUploadPath, "ripme.jar") +else: + print("Not uploading release being script was run with --test flag")