From: Edward Z. Yang Date: Fri, 31 Jul 2009 02:12:17 +0000 (-0400) Subject: Fix wizard -> wizard_bin bug, fix dry run, create .scripts/variables X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/commitdiff_plain/4b2ee92aafcc380eaf4a2c16f9ee08c53ad3a5f8?hp=48a6b1d128d5f1841f3f96e9f8209b418712e2ef Fix wizard -> wizard_bin bug, fix dry run, create .scripts/variables Signed-off-by: Edward Z. Yang --- diff --git a/wizard/app/mediawiki.py b/wizard/app/mediawiki.py index 15d3e42..d36d938 100644 --- a/wizard/app/mediawiki.py +++ b/wizard/app/mediawiki.py @@ -13,7 +13,7 @@ class Application(deploy.Application): def extractors(self): if not self._extractors: self._extractors = util.dictmap(make_extractor, - {'WIZARD_IP': 'IP' # obsolete + {'WIZARD_IP': 'IP' # obsolete, remove after we're done ,'WIZARD_SITENAME': 'wgSitename' ,'WIZARD_SCRIPTPATH': 'wgScriptPath' ,'WIZARD_EMERGENCYCONTACT': 'wgEmergencyContact' diff --git a/wizard/command/migrate.py b/wizard/command/migrate.py index cfe4619..fd39dbe 100644 --- a/wizard/command/migrate.py +++ b/wizard/command/migrate.py @@ -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 diff --git a/wizard/deploy.py b/wizard/deploy.py index 7908f03..fa0085b 100644 --- a/wizard/deploy.py +++ b/wizard/deploy.py @@ -35,6 +35,8 @@ class Deployment(object): self._read_cache[file] = f.read() f.close() return self._read_cache[file] + def extract(self): + return self.application.extract(self) @property def version_file(self): return os.path.join(self.location, '.scripts-version') diff --git a/wizard/shell.py b/wizard/shell.py index bf7e172..3ed61a3 100644 --- a/wizard/shell.py +++ b/wizard/shell.py @@ -8,10 +8,10 @@ from wizard import util """This is the path to the wizard executable as specified by the caller; it lets us recursively invoke wizard""" -wizard = sys.argv[0] +wizard_bin = sys.argv[0] def is_python(args): - return args[0] == "python" or args[0] == wizard + return args[0] == "python" or args[0] == wizard_bin class Shell(object): """An advanced shell, with the ability to do dry-run and log commands"""