import os import errno import logging from wizard import command, deploy, shell, util def main(argv, baton): options, args = parse_args(argv, baton) # Directory information not transferred via command line, so this # will not error due to the changed directory. shell.drop_priviledges(".", options.log_file) command.chdir_to_production() production = deploy.ProductionCopy(".") production.verify() 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. 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 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