def _install_dependency(self, dependency):
        if 'zip_url' in dependency:
            self.logger.info(
                'Deploying unmanaged metadata from /{} of {}'.format(
                    dependency['subfolder'],
                    dependency['zip_url'],
                ))
            package_zip = download_extract_zip(
                dependency['zip_url'],
                subfolder=dependency.get('subfolder'),
                headers=dependency.get('headers', {}),
            )
            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 = zip_tokenize_namespace(
                    package_zip,
                    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 = zip_inject_namespace(
                    package_zip,
                    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 = zip_strip_namespace(
                    package_zip,
                    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'])()

        api = self.api_class(self,
                             package_zip,
                             purge_on_delete=self.options['purge_on_delete'])
        return api()
    def _install_dependency(self, dependency):
        if "zip_url" in dependency:
            self.logger.info(
                "Deploying unmanaged metadata from /{} of {}".format(
                    dependency["subfolder"], dependency["zip_url"]))
            package_zip = download_extract_zip(
                dependency["zip_url"],
                subfolder=dependency.get("subfolder"),
                headers=dependency.get("headers", {}),
            )
            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 = zip_tokenize_namespace(
                    package_zip,
                    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 = zip_inject_namespace(
                    package_zip,
                    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 = zip_strip_namespace(
                    package_zip,
                    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"])()

        api = self.api_class(self,
                             package_zip,
                             purge_on_delete=self.options["purge_on_delete"])
        return api()
    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()
Example #4
0
 def test_populate_zip(self):
     zf = mock.Mock()
     builder = ZipfilePackageZipBuilder(zf)
     builder._populate_zip()
Example #5
0
 def test_open_zip(self):
     zf = mock.Mock()
     builder = ZipfilePackageZipBuilder(zf)
     builder._open_zip()
Example #6
0
 def test_init(self):
     zf = mock.Mock()
     builder = ZipfilePackageZipBuilder(zf)
     self.assertIs(zf, builder.zip)