def _process_namespace(self, src_zip): if self.options.get("namespace_tokenize"): src_zip = process_text_in_zipfile( src_zip, functools.partial( tokenize_namespace, namespace=self.options["namespace_tokenize"], logger=self.logger, ), ) if self.options.get("namespace_inject"): src_zip = process_text_in_zipfile( src_zip, functools.partial( inject_namespace, namespace=self.options["namespace_inject"], managed=not process_bool_arg( self.options.get("unmanaged", True)), namespaced_org=process_bool_arg( self.options.get("namespaced_org", False)), logger=self.logger, ), ) if self.options.get("namespace_strip"): src_zip = process_text_in_zipfile( src_zip, functools.partial( strip_namespace, namespace=self.options["namespace_strip"], logger=self.logger, ), ) return src_zip
def _process_namespace(self, zipf): if self.options.get("namespace_inject"): managed = not process_bool_arg(self.options.get("unmanaged", True)) if managed: self.logger.info( "Replacing namespace tokens from metadata with namespace prefix {}__".format( self.options["namespace_inject"] ) ) else: self.logger.info( "Stripping namespace tokens from metadata for unmanaged deployment" ) zipf = process_text_in_zipfile( zipf, functools.partial( inject_namespace, namespace=self.options["namespace_inject"], managed=managed, namespaced_org=process_bool_arg( self.options.get("namespaced_org", False) ), logger=self.logger, ), ) if self.options.get("namespace_strip"): zipf = process_text_in_zipfile( zipf, functools.partial( strip_namespace, namespace=self.options["namespace_strip"], logger=self.logger, ), ) return zipf
def _process_namespace_tokens(self): zipf = self.zf if self.options.get("namespace_tokenize"): self.logger.info( f"Tokenizing namespace prefix {self.options['namespace_tokenize']}__" ) zipf = process_text_in_zipfile( zipf, functools.partial( tokenize_namespace, namespace=self.options["namespace_tokenize"], logger=self.logger, ), ) if self.options.get("namespace_inject"): managed = not self.options.get("unmanaged", True) if managed: self.logger.info( "Replacing namespace tokens from metadata with namespace prefix " f"{self.options['namespace_inject']}__" ) else: self.logger.info( "Stripping namespace tokens from metadata for unmanaged deployment" ) zipf = process_text_in_zipfile( zipf, functools.partial( inject_namespace, namespace=self.options["namespace_inject"], managed=managed, namespaced_org=self.options.get("namespaced_org", False), logger=self.logger, ), ) if self.options.get("namespace_strip"): self.logger.info("Stripping namespace tokens from metadata") zipf = process_text_in_zipfile( zipf, functools.partial( strip_namespace, namespace=self.options["namespace_strip"], logger=self.logger, ), ) self.zf = zipf
def _process_namespace(self, src_zip): if self.options.get("namespace_tokenize"): src_zip = process_text_in_zipfile( src_zip, functools.partial( tokenize_namespace, namespace=self.options["namespace_tokenize"], logger=self.logger, ), ) if self.options.get("namespace_strip"): src_zip = process_text_in_zipfile( src_zip, functools.partial( strip_namespace, namespace=self.options["namespace_strip"], logger=self.logger, ), ) return src_zip
def test_process_text_in_zipfile__skips_binary(self): contents = b"\x9c%%%NAMESPACE%%%" zf = zipfile.ZipFile(io.BytesIO(), "w") zf.writestr("test", contents) def process(name, content): return name, "" zf = utils.process_text_in_zipfile(zf, process) result = zf.read("test") # assert contents were untouched assert contents == result
def _install_dependency(self, dependency): if "zip_url" or "repo_name" in dependency: package_zip = None if "zip_url" in dependency: self.logger.info( "Deploying unmanaged metadata from /{} of {}".format( dependency["subfolder"], dependency["zip_url"])) package_zip = self._download_extract_zip( dependency["zip_url"], subfolder=dependency.get("subfolder")) elif "repo_name" in dependency: self.logger.info( "Deploying unmanaged metadata from /{} of {}/{}".format( dependency["subfolder"], dependency["repo_owner"], dependency["repo_name"], )) gh_for_repo = self.project_config.get_github_api( dependency["repo_owner"], dependency["repo_name"]) package_zip = self._download_extract_github( gh_for_repo, dependency["repo_owner"], dependency["repo_name"], dependency["subfolder"], ref=dependency.get("ref"), ) if package_zip: if dependency.get("namespace_tokenize"): self.logger.info( "Replacing namespace prefix {}__ in files and filenames with namespace token strings" .format("{}__".format( dependency["namespace_tokenize"]))) package_zip = process_text_in_zipfile( package_zip, functools.partial( tokenize_namespace, namespace=dependency["namespace_tokenize"], logger=self.logger, ), ) if dependency.get("namespace_inject"): self.logger.info( "Replacing namespace tokens with {}".format( "{}__".format(dependency["namespace_inject"]))) package_zip = process_text_in_zipfile( package_zip, functools.partial( inject_namespace, namespace=dependency["namespace_inject"], managed=not dependency.get("unmanaged"), namespaced_org=self.options["namespaced_org"], logger=self.logger, ), ) if dependency.get("namespace_strip"): self.logger.info( "Removing namespace prefix {}__ from all files and filenames" .format("{}__".format(dependency["namespace_strip"]))) package_zip = process_text_in_zipfile( package_zip, functools.partial( strip_namespace, namespace=dependency["namespace_strip"], logger=self.logger, ), ) package_zip = ZipfilePackageZipBuilder(package_zip)() elif "namespace" in dependency: self.logger.info("Installing {} version {}".format( dependency["namespace"], dependency["version"])) package_zip = InstallPackageZipBuilder( dependency["namespace"], dependency["version"], securityType=self.options["security_type"], )() api = self.api_class(self, package_zip, purge_on_delete=self.options["purge_on_delete"]) return api()