def take_action(self, parsed_args): environment = self.app.options.environment e = SecretsEnvironment(environment) if parsed_args.tmpdir: if not e.environment_exists() and not parsed_args.create: return (f"[-] environment '{str(e)}' does not exist; " "use '--create' to create it") tmpdir = e.get_tmpdir_path(create_path=parsed_args.create) self._print(tmpdir, parsed_args.json) else: base_path = e.get_environment_path() subdir = parsed_args.subdir full_path = base_path if subdir is None \ else os.path.join(base_path, *subdir) if not os.path.exists(full_path) and parsed_args.create: mode = 0o700 os.makedirs(full_path, mode) if self.app_args.verbose_level > 1: self.logger.info("[+] created %s", full_path) if parsed_args.exists: # Just check existance and return result exists = os.path.exists(full_path) if self.app_args.verbose_level > 1: status = "exists" if exists else "does not exist" self.logger.info("[+] environment path '%s' %s", full_path, status) return 0 if exists else 1 else: self._print(full_path, parsed_args.json)
def take_action(self, parsed_args): secrets_basedir = self.app.secrets_basedir if parsed_args.alias is not None: if len(parsed_args.env) != 1: raise RuntimeError( '[-] --alias requires one source environment') se = SecretsEnvironment( environment=parsed_args.alias, secrets_basedir=secrets_basedir, create_root=parsed_args.force, ) se.environment_create( source=parsed_args.env[0], alias=True ) if se.environment_exists(): self.logger.info( "[+] environment '%s' aliased to '%s'", parsed_args.alias, parsed_args.env[0] ) else: raise RuntimeError('[-] creating environment failed') else: # Default to app environment identifier if len(parsed_args.env) == 0: parsed_args.env = list(self.app.environment) for environment in parsed_args.env: se = SecretsEnvironment( environment=environment, secrets_basedir=secrets_basedir, create_root=True, ) se.environment_create(source=parsed_args.clone_from) self.logger.info( "[+] environment '%s' (%s) created", environment, se.get_environment_path() ) if parsed_args.clone_from: se.read_secrets(from_descriptions=True) se.write_secrets()