]> scripts.mit.edu Git - wizard.git/blobdiff - wizard/command/upgrade.py
Implement 'wizard backup'. Other minor refactorings:
[wizard.git] / wizard / command / upgrade.py
index 9631210422d30796f4c55f8c248c39885627854f..9f388e047eb4d8820a7ff82cd75f23cc4f096db3 100644 (file)
@@ -1,5 +1,6 @@
 import optparse
 import sys
+import distutils.version
 import os
 import shutil
 import logging.handlers
@@ -40,7 +41,7 @@ def main(argv, baton):
         d.verifyVersion()
         repo = d.application.repository(options.srv_path)
         version = calculate_newest_version(sh, repo)
-        if version == d.app_version.scripts_tag:
+        if version == d.app_version.scripts_tag and not options.force:
             raise AlreadyUpgraded
         if not options.dry_run:
             perform_pre_commit(sh)
@@ -78,7 +79,8 @@ def main(argv, baton):
     #   - merge could fail (race); that's /really/ dangerous.
     sh.call("git", "pull", temp_wc_dir, "master")
     # run update script
-    d.application.upgrade(options)
+    version_obj = distutils.version.LooseVersion(version.partition('-')[2])
+    d.application.upgrade(version_obj, options)
     # XXX: frob .htaccess to make site accessible
     # XXX:  - check if .htaccess changed, first.  Upgrade
     #       process might have frobbed it.  Don't be
@@ -165,6 +167,8 @@ WARNING: This is still experimental."""
     parser.add_option("--continue", dest="continue_", action="store_true",
             default=False, help="Continues an upgrade that has had its merge manually "
             "resolved using the current working directory as the resolved copy.")
+    parser.add_option("--force", dest="force", action="store_true",
+            default=False, help="Force running upgrade even if it's already at latest version.")
     baton.push(parser, "srv_path")
     options, args = parser.parse_all(argv)
     if len(args) > 1: