Source code for pywf_internal_proprietary.define_10_cloudflare
# -*- coding: utf-8 -*-"""Setup automation for Cloudflare."""importtypingasTimportosimportdataclassestry:importboto3importbotocore.exceptionsimportrequestsfromgithubimportGithubexceptImportError:# pragma: no coverpassfrom.vendor.emojiimportEmojifrom.loggerimportloggerfrom.runtimeimportIS_CIifT.TYPE_CHECKING:# pragma: no coverfrom.defineimportPyWf
[docs]@dataclasses.dataclassclassPyWfCloudflare:# pragma: no cover""" Namespace class for Cloudflare setup automation. """@propertydefcloudflare_pages_doc_site_url(self:"PyWf")->str:""" Get the URL of the documentation site hosted on Cloudflare Pages. """returnf"http://{self.package_name_slug}.pages.dev/"defsetup_cloudflare_env_vars(self:"PyWf"):os.environ["CLOUDFLARE_API_TOKEN"]=self.cloudflare_token@logger.emoji_block(msg="Create Cloudflare Pages project",emoji=Emoji.doc,)def_create_cloudflare_pages_project(self:"PyWf",real_run:bool=True,):""" Create a Cloudflare Pages project using Wrangler CLI. """self.setup_cloudflare_env_vars()args=[f"{self.path_bin_wrangler}","pages","project","create",self.package_name_slug,"--production-branch","main",]self.run_command(args,real_run)
create_cloudflare_pages_project.__doc__=_create_cloudflare_pages_project.__doc__@logger.emoji_block(msg="Create Cloudflare Pages project",emoji=Emoji.doc,)def_deploy_cloudflare_pages(self:"PyWf",real_run:bool=True,):""" Deploy the documentation site to Cloudflare Pages using Wrangler CLI. """self.setup_cloudflare_env_vars()args=[f"{self.path_bin_wrangler}","pages","deploy",f"{self.dir_sphinx_doc_build_html}",f"--project-name={self.package_name_slug}",]self.run_command(args,real_run)
deploy_cloudflare_pages.__doc__=_deploy_cloudflare_pages.__doc__@logger.emoji_block(msg="Setup Cloudflare Pages Upload Token on GitHub",emoji=Emoji.test,)def_setup_cloudflare_pages_upload_token_on_github(self:"PyWf",real_run:bool=True,):""" Apply the cloudflare pages upload token to GitHub Action secrets in your GitHub repository. Ref: - https://docs.codecov.com/reference/repos_retrieve - https://docs.codecov.com/reference/repos_config_retrieve - https://pygithub.readthedocs.io/en/latest/examples/Repository.html :returns: a boolean flag to indicate whether the operation is performed. """logger.info("Setting up Cloudflare pages upload token on GitHub...")withlogger.indent():logger.info(f"preview at {self.github_actions_secrets_settings_url}")ifreal_run:# pragma: no coverrepo=self.gh.get_repo(self.github_repo_fullname)repo.create_secret(secret_name="CLOUDFLARE_API_TOKEN",unencrypted_value=self.cloudflare_token,secret_type="actions",)returnreal_run