]> scripts.mit.edu Git - wizard.git/blobdiff - wizard/command/migrate.py
Fix wizard -> wizard_bin bug, fix dry run, create .scripts/variables
[wizard.git] / wizard / command / migrate.py
index cfe461929779b022c452119c14aceecbc40844d3..fd39dbe1cbd78c8a02b39ae3f0d349075743e98a 100644 (file)
@@ -15,7 +15,8 @@ def main(argv, baton):
     command.chdir(dir)
     check_if_already_migrated(options)
 
-    version = calculate_version()
+    deployment = make_deployment() # uses chdir
+    version = deployment.app_version
     repo    = version.application.repository
     tag     = version.scripts_tag
 
@@ -24,8 +25,12 @@ def main(argv, baton):
     sh = shell.Shell(options.dry_run)
     check_if_tag_exists(sh, repo, tag)
     make_repository(sh, options, repo, tag)
+    make_variables(deployment, options)
 
-    os.rename(".scripts-version", ".scripts/old-version") # archive
+    if not options.dry_run:
+        os.rename(".scripts-version", ".scripts/old-version") # archive
+    else:
+        logging.info("mv .scripts-version .scripts/old-version")
 
 def parse_args(argv):
     usage = """usage: %prog migrate [ARGS] DIR
@@ -61,10 +66,9 @@ def check_if_already_migrated(options):
                 logging.warning("Force removing .scripts directory")
                 if not options.dry_run: shutil.rmtree(".scripts")
 
-def calculate_version():
+def make_deployment():
     try:
-        d = deploy.Deployment.fromDir(".")
-        return d.app_version
+        return deploy.Deployment(".")
     except IOError as e:
         if e.errno == errno.ENOENT:
             raise NotAutoinstallError(dir)
@@ -125,6 +129,24 @@ def make_repository(sh, options, repo, tag):
         except shell.CallError:
             pass
 
+def make_variables(d, options):
+    """Make .scripts/variables which contains variables based off of
+    what was regexed out of existing configuration files."""
+    variables = d.extract()
+    if not options.dry_run: f = open(".scripts/variables", "w")
+    for k,v in variables.items():
+        if v is None:
+            # once we get everything on the same version, you should
+            # actually start paying attention to these warnings
+            logging.warning("Variable %s not found" % k)
+        else:
+            logging.debug("Variable %s is %s" % (k,v))
+            if not options.dry_run:
+                f.write("%s %s\n" % (k,v))
+            else:
+                logging.info('# write line "%s %s" to .scripts/variables' % (k,v))
+    if not options.dry_run: f.close()
+
 class Error(command.Error):
     """Base exception for all exceptions raised by migrate"""
     pass