def main(template, target, no_input, checkout, verbose): if verbose: logging.basicConfig(format='%(levelname)s %(filename)s: %(message)s', level=logging.DEBUG) else: logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) try: DEFAULT_CONFIG.setdefault('cookiecutter', {}) src = os.path.join(target, '.cookiecutterrc') if os.path.exists(src): logger.info("Loading config from %r", src) extra_context = get_config(src) logger.debug("Loaded %r", extra_context) extra_context = extra_context.get( 'cookiecutter') or extra_context.get('default_context') logger.debug("Loaded %r", extra_context) else: logger.info("No .cookiecutterrc in %r", target) extra_context = None with weave('cookiecutter.main.generate_files', save_context): with weave('cookiecutter.generate.rmtree', complain): cookiecutter( template, checkout, no_input, overwrite_if_exists=True, output_dir=os.path.dirname(target), extra_context=extra_context, ) except (OutputDirExistsException, InvalidModeException) as e: click.echo(e) sys.exit(1)
def create_and_dump_config_file(self): """Create a tmp file to store used configuration.""" if not self.tmp_file: self.tmp_file = tempfile.NamedTemporaryFile(mode='w+') config = DEFAULT_CONFIG.copy() # BUG: when dumping {}, it's read back as a string '{}' config['default_context'] = None config['replay_dir'] = tempfile.gettempdir() yaml.dump(config, self.tmp_file) return self.tmp_file.name