diff --git a/docs/BUILD b/docs/BUILD index 155aeecd1ed0..1e43c1697665 100644 --- a/docs/BUILD +++ b/docs/BUILD @@ -125,11 +125,7 @@ genrule( pkg_files( name = "sphinx_base", - srcs = glob( - [ - "_ext/*", - ], - ) + [ + srcs = [ ":conf.py", ":redirects.txt", ":versions.yaml", diff --git a/docs/_ext/powershell_lexer.py b/docs/_ext/powershell_lexer.py deleted file mode 100644 index af96820275f6..000000000000 --- a/docs/_ext/powershell_lexer.py +++ /dev/null @@ -1,6 +0,0 @@ -from pygments.lexers import PowerShellLexer - - -def setup(app): - app.add_lexer('powershell', PowerShellLexer) - return dict(parallel_read_safe=True) diff --git a/docs/_ext/validating_code_block.py b/docs/_ext/validating_code_block.py deleted file mode 100644 index cab069c4656e..000000000000 --- a/docs/_ext/validating_code_block.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import subprocess -from functools import cached_property - -import yaml - -from docutils.parsers.rst import directives - -from sphinx.directives.code import CodeBlock -from sphinx.errors import ExtensionError - - -class ValidatingCodeBlock(CodeBlock): - """A directive that provides protobuf yaml formatting and validation. - - 'type-name' option is required and expected to conain full Envoy API type. - An ExtensionError is raised on validation failure. - Validation will be skipped if SPHINX_SKIP_CONFIG_VALIDATION environment variable is set. - """ - has_content = True - required_arguments = CodeBlock.required_arguments - optional_arguments = CodeBlock.optional_arguments - final_argument_whitespace = CodeBlock.final_argument_whitespace - option_spec = { - 'type-name': directives.unchanged, - } - option_spec.update(CodeBlock.option_spec) - - @cached_property - def configs(self) -> dict: - _configs = dict( - descriptor_path="", - skip_validation=False, - validator_path="bazel-bin/tools/config_validation/validate_fragment") - if os.environ.get("ENVOY_DOCS_BUILD_CONFIG"): - with open(os.environ["ENVOY_DOCS_BUILD_CONFIG"]) as f: - _configs.update(yaml.safe_load(f.read())) - return _configs - - @property - def descriptor_path(self) -> str: - return self.configs["descriptor_path"] - - @property - def skip_validation(self) -> bool: - return bool(self.configs["skip_validation"]) - - @property - def validator_args(self) -> tuple: - args = ( - self.options.get('type-name'), - '-s', - '\n'.join(self.content), - ) - return ( - args + ("--descriptor_path", self.descriptor_path) if self.descriptor_path else args) - - @property - def validator_path(self) -> str: - return self.configs["validator_path"] - - def run(self): - source, line = self.state_machine.get_source_and_line(self.lineno) - # built-in directives.unchanged_required option validator produces a confusing error message - if self.options.get('type-name') == None: - raise ExtensionError("Expected type name in: {0} line: {1}".format(source, line)) - - if not self.skip_validation: - completed = subprocess.run((self.validator_path,) + self.validator_args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - encoding='utf-8') - if completed.returncode != 0: - raise ExtensionError( - "Failed config validation for type: '{0}' in: {1} line: {2}:\n {3}".format( - self.options.get('type-name'), source, line, completed.stderr)) - - self.options.pop('type-name', None) - return list(super().run()) - - -def setup(app): - app.add_directive("validated-code-block", ValidatingCodeBlock) - - return { - 'version': '0.1', - 'parallel_read_safe': True, - 'parallel_write_safe': True, - } diff --git a/docs/conf.py b/docs/conf.py index e758439157c1..de0be3a471fa 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -92,8 +92,9 @@ def _config(key): extensions = [ 'envoy.docs.sphinx_runner.ext.httpdomain', 'sphinx.ext.extlinks', 'sphinx.ext.ifconfig', - 'sphinx.ext.intersphinx', 'sphinx_tabs.tabs', 'sphinx_copybutton', 'validating_code_block', - 'sphinxext.rediraffe', 'powershell_lexer' + 'sphinx.ext.intersphinx', 'sphinx_tabs.tabs', 'sphinx_copybutton', + 'envoy.docs.sphinx_runner.ext.validating_code_block', 'sphinxext.rediraffe', + 'envoy.docs.sphinx_runner.ext.powershell_lexer' ] release_level = _config('release_level') diff --git a/tools/base/requirements.in b/tools/base/requirements.in index 2a9bb6bdda21..3ff99ce4fe38 100644 --- a/tools/base/requirements.in +++ b/tools/base/requirements.in @@ -10,7 +10,7 @@ envoy.dependency.pip_check>=0.1.2 envoy.distribution.release>=0.0.7 envoy.distribution.repo>=0.0.5 envoy.distribution.verify>=0.0.8 -envoy.docs.sphinx-runner>=0.1.4 +envoy.docs.sphinx-runner>=0.1.6 envoy.gpg.identity>=0.1.0 envoy.gpg.sign>=0.1.0 flake8 diff --git a/tools/base/requirements.txt b/tools/base/requirements.txt index daa7a656de1c..bdc252caccd5 100644 --- a/tools/base/requirements.txt +++ b/tools/base/requirements.txt @@ -339,9 +339,9 @@ envoy-distribution-verify==0.0.8 \ envoy-docker-utils==0.0.2 \ --hash=sha256:a12cb57f0b6e204d646cbf94f927b3a8f5a27ed15f60d0576176584ec16a4b76 # via envoy-distribution-distrotest -envoy-docs-sphinx-runner==0.1.5 \ - --hash=sha256:20bb0b2b26de86ea8478b1e9c89cad4ec6ba7e43263979a1672cc421e660a10d \ - --hash=sha256:d94ca8df1046dd465f2c0a981c8354e74d6cda57ea95483200812cb88560492b +envoy-docs-sphinx-runner==0.1.6 \ + --hash=sha256:12c1e3e259400a46363832e380f7286bc3cda7b374d8ae5b57ec07372569ee9e \ + --hash=sha256:e8a84d7f238c89084795e2cda6de414441ebb9511bb7392df10c72321fecb8cf # via -r requirements.in envoy-github-abstract==0.0.21 \ --hash=sha256:243dae9457243fb42e4643b1f45006c3b0d3151c808884217447d29a081b26a1 \ @@ -777,6 +777,7 @@ pyyaml==6.0 \ # -r requirements.in # envoy-base-utils # envoy-code-check + # envoy-docs-sphinx-runner requests==2.26.0 \ --hash=sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24 \ --hash=sha256:b8aa58f8cf793ffd8782d3d8cb19e66ef36f7aba4353eec859e74678b01b07a7