]> scripts.mit.edu Git - wizard.git/blobdiff - wizard/command/blacklist.py
Fix bug where php.ini not being rewritten for MediaWiki.
[wizard.git] / wizard / command / blacklist.py
index e90fa36e15e7002a34477b6499664abcb100c8f4..d3007638d2e7bec860f5d0af3995c386fac63188 100644 (file)
@@ -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()
+    command.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