X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/blobdiff_plain/c0f760d6fbe3801ab6a34f02e5ddb739672c9630..f37d6694694b05ec5549c0c2585e02f0231251b3:/wizard/command/blacklist.py diff --git a/wizard/command/blacklist.py b/wizard/command/blacklist.py index e90fa36..1d56def 100644 --- a/wizard/command/blacklist.py +++ b/wizard/command/blacklist.py @@ -1,28 +1,46 @@ import os +import errno +import logging from wizard import command, deploy, shell, util def main(argv, baton): options, args = parse_args(argv, baton) - reason = args[0] # Directory information not transferred via command line, so this # will not error due to the changed directory. shell.drop_priviledges(".", options.log_file) util.chdir_to_production() production = deploy.ProductionCopy(".") production.verify() - open(production.blacklisted_file, 'w').write(reason + "\n") + if options.delete: + try: + os.unlink(production.blacklisted_file) + except OSError as e: + if e.errno == errno.ENOENT: + logging.warning("No-op: application was not blacklisted") + else: + raise + else: + open(production.blacklisted_file, 'w').write(args[0] + "\n") def parse_args(argv, baton): usage = """usage: %prog blacklist [ARGS] REASON + %prog blacklist --delete Adds the file .wizard/blacklisted so that future upgrades -are not attempted without manual intervention.""" +are not attempted without manual intervention. If run +with the flag --delete, it deletes the blacklist file.""" parser = command.WizardOptionParser(usage) + parser.add_option("--delete", dest="delete", action="store_true", + default=False, help="Delete the blacklist entry, enabling normal usage.") options, args = parser.parse_all(argv) - if len(args) > 2: - parser.error("too many arguments") - if len(args) < 1: - parser.error("must specify reason") + if options.delete: + if len(args) > 1: + parser.error("too many arguments") + else: + if len(args) > 2: + parser.error("too many arguments") + if len(args) < 1: + parser.error("must specify reason") return options, args