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
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
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)
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