diff --git a/.github/workflows/markdown.yaml b/.github/workflows/markdown.yaml index 2a8661e47..cb5d05a01 100644 --- a/.github/workflows/markdown.yaml +++ b/.github/workflows/markdown.yaml @@ -18,10 +18,10 @@ jobs: files: | docs/**/*.md files_ignore: | - docs/src/_parts/** + docs/canonicalk8s/_parts/** - uses: DavidAnson/markdownlint-cli2-action@v16 if: steps.changed-markdown-files.outputs.any_changed == 'true' with: - config: "docs/src/.markdownlint.json" + config: "docs/canonicalk8s/.sphinx/.markdownlint.json" globs: ${{ steps.changed-markdown-files.outputs.all_changed_files }} separator: "," diff --git a/.gitignore b/.gitignore index 896206d59..e4bba7fd8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,11 +15,11 @@ k8s_*.txt # ignore docs ephemerals -/docs/_build -/docs/tools/.sphinx/venv/ -/docs/tools/.sphinx/warnings.txt -/docs/tools/.sphinx/.wordlist.dic -/docs/tools/.sphinx/.doctrees/ -/docs/tools/.sphinx/node_modules -/docs/tools/.sphinx/styles/* -/docs/tools/.sphinx/vale.ini +/docs/canonicalk8s/_build +/docs/canonicalk8s/.sphinx/venv/ +/docs/canonicalk8s/.sphinx/warnings.txt +/docs/canonicalk8s/.sphinx/.wordlist.dic +/docs/canonicalk8s/.sphinx/.doctrees/ +/docs/canonicalk8s/.sphinx/node_modules +/docs/canonicalk8s/.sphinx/styles/* +/docs/canonicalk8s/.sphinx/vale.ini diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index eac0502ed..96f6e56cc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,4 +2,4 @@ Thanks for your interest in contributing to Canonical Kubernetes! -Our contribution guide is hosted here: +Our contribution guide is hosted here: diff --git a/docs/README.md b/docs/README.md index f1af97305..ca263f963 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,15 +7,15 @@ The directories are organised like this: ``` -├── _build -│ ├── {contains the generated docs} ├── README.md -├── src -│ ├──{source files for the docs} ├── canonicalk8s +│ ├── _build +│ │ ├── {contains the generated docs} │ ├──{sphinx build tools for creating the docs for Canonical K8s} +│ ├──{source files for canonicalk8s docs} ├── moonray │ ├──{sphinx build tools for creating the docs for Canonical K8s} +│ ├──{source files for moonray docs} ``` ## Building the docs diff --git a/docs/src/.custom_wordlist.txt b/docs/canonicalk8s/.custom_wordlist.txt similarity index 100% rename from docs/src/.custom_wordlist.txt rename to docs/canonicalk8s/.custom_wordlist.txt diff --git a/docs/canonicalk8s/.readthedocs.yaml b/docs/canonicalk8s/.readthedocs.yaml index 6f30701e6..09bcac4ae 100644 --- a/docs/canonicalk8s/.readthedocs.yaml +++ b/docs/canonicalk8s/.readthedocs.yaml @@ -24,11 +24,11 @@ build: exit 183; fi ls - + # Build documentation in the docs/ directory with Sphinx sphinx: builder: dirhtml - configuration: docs/canonicalk8s/conf-rtd.py + configuration: docs/canonicalk8s/conf.py # If using Sphinx, optionally build your docs in additional formats such as PDF # formats: @@ -38,6 +38,3 @@ sphinx: python: install: - requirements: docs/canonicalk8s/.sphinx/requirements.txt - - - diff --git a/docs/canonicalk8s/.markdownlint.json b/docs/canonicalk8s/.sphinx/.markdownlint.json similarity index 100% rename from docs/canonicalk8s/.markdownlint.json rename to docs/canonicalk8s/.sphinx/.markdownlint.json diff --git a/docs/src/.wordlist.txt b/docs/canonicalk8s/.sphinx/.wordlist.txt similarity index 100% rename from docs/src/.wordlist.txt rename to docs/canonicalk8s/.sphinx/.wordlist.txt diff --git a/docs/canonicalk8s/metrics/scripts/build_metrics.sh b/docs/canonicalk8s/.sphinx/metrics/build_metrics.sh similarity index 100% rename from docs/canonicalk8s/metrics/scripts/build_metrics.sh rename to docs/canonicalk8s/.sphinx/metrics/build_metrics.sh diff --git a/docs/canonicalk8s/metrics/scripts/source_metrics.sh b/docs/canonicalk8s/.sphinx/metrics/source_metrics.sh similarity index 100% rename from docs/canonicalk8s/metrics/scripts/source_metrics.sh rename to docs/canonicalk8s/.sphinx/metrics/source_metrics.sh diff --git a/docs/canonicalk8s/.sphinx/spellingcheck.yaml b/docs/canonicalk8s/.sphinx/spellingcheck.yaml index 648d9d7ee..9ee9ae713 100644 --- a/docs/canonicalk8s/.sphinx/spellingcheck.yaml +++ b/docs/canonicalk8s/.sphinx/spellingcheck.yaml @@ -1,30 +1,30 @@ matrix: -- name: rST files - aspell: - lang: en - d: en_GB - dictionary: - wordlists: - - src/.wordlist.txt - - src/.custom_wordlist.txt - output: .sphinx/.wordlist.dic - sources: - - ../_build/**/*.html - pipeline: - - pyspelling.filters.html: - comments: false - attributes: - - title - - alt - ignores: - - code - - pre - - spellexception - - link - - title - - div.relatedlinks - - strong.command - - div.visually-hidden - - img - - a.p-navigation__link - - a.contributor + - name: rST files + aspell: + lang: en + d: en_GB + dictionary: + wordlists: + - .sphinx/.wordlist.txt + - .custom_wordlist.txt + output: .sphinx/.wordlist.dic + sources: + - _build/**/*.html + pipeline: + - pyspelling.filters.html: + comments: false + attributes: + - title + - alt + ignores: + - code + - pre + - spellexception + - link + - title + - div.relatedlinks + - strong.command + - div.visually-hidden + - img + - a.p-navigation__link + - a.contributor diff --git a/docs/canonicalk8s/Makefile b/docs/canonicalk8s/Makefile index 72fe7c602..7c47e564f 100644 --- a/docs/canonicalk8s/Makefile +++ b/docs/canonicalk8s/Makefile @@ -1,11 +1,23 @@ -# This Makefile stub allows you to customize starter pack (SP) targets. -# Consider this file as a bridge between your project -# and the starter pack's predefined targets that reside in Makefile.sp. +# Minimal makefile for Sphinx documentation # -# You can add your own, non-SP targets here or override SP targets -# to fit your project's needs. For example, you can define and use targets -# named "install" or "run", but continue to use SP targets like "sp-install" -# or "sp-run" when working on the documentation. +# Add your customisation to `Makefile` instead. + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXDIR = .sphinx +SPHINXOPTS ?= -c . -d $(SPHINXDIR)/.doctrees -j auto +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +METRICSDIR = $(SOURCEDIR)/.sphinx/metrics +BUILDDIR = _build +VENVDIR = $(SPHINXDIR)/venv +PA11Y = $(SPHINXDIR)/node_modules/pa11y/bin/pa11y.js --config $(SPHINXDIR)/pa11y.json +VENV = $(VENVDIR)/bin/activate +TARGET = * +ALLFILES = *.rst **/*.rst +ADDPREREQS ?= +REQPDFPACKS = latexmk fonts-freefont-otf texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-font-utils texlive-lang-cjk texlive-xetex plantuml xindy tex-gyre dvipng +CONFIRM_SUDO ?= N # Put it first so that "make" without argument is like "make help". help: @@ -27,5 +39,151 @@ help: "* other possible targets: make \n" \ "------------------------------------------------------------- \n" +.PHONY: full-help woke-install spellcheck-install pa11y-install install run html \ + epub serve clean clean-doc spelling spellcheck linkcheck woke \ + allmetrics pa11y pdf-prep-force pdf-prep pdf Makefile.sp vale bash + +full-help: $(VENVDIR) + @. $(VENV); $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + @echo "\n\033[1;31mNOTE: This help texts shows unsupported targets!\033[0m" + @echo "Run 'make help' to see supported targets." + +# If requirements are updated, venv should be rebuilt and timestamped. +$(VENVDIR): + python3 -c "import venv" || \ + (echo "You must install python3-venv before you can build the documentation."; exit 1) + @echo "... setting up virtualenv" + python3 -m venv $(VENVDIR) + . $(VENV); pip install $(PIPOPTS) --require-virtualenv \ + --upgrade -r $(SPHINXDIR)/requirements.txt \ + --log $(VENVDIR)/pip_install.log + @test ! -f $(VENVDIR)/pip_list.txt || \ + mv $(VENVDIR)/pip_list.txt $(VENVDIR)/pip_list.txt.bak + @. $(VENV); pip list --local --format=freeze > $(VENVDIR)/pip_list.txt + @touch $(VENVDIR) + +woke-install: + @type woke >/dev/null 2>&1 || \ + { \ + echo "Installing system-wide \"woke\" snap..."; \ + confirm_sudo=$(CONFIRM_SUDO); \ + if [ "$$confirm_sudo" != "y" ] && [ "$$confirm_sudo" != "Y" ]; then \ + read -p "This requires sudo privileges. Proceed? [y/N]: " confirm_sudo; \ + fi; \ + if [ "$$confirm_sudo" = "y" ] || [ "$$confirm_sudo" = "Y" ]; then \ + sudo snap install woke; \ + else \ + echo "Installation cancelled."; \ + fi \ + } + + spellcheck-install: + @type aspell >/dev/null 2>&1 || \ + { \ + echo "Installing system-wide \"aspell\" packages..."; \ + confirm_sudo=$(CONFIRM_SUDO); \ + if [ "$$confirm_sudo" != "y" ] && [ "$$confirm_sudo" != "Y" ]; then \ + read -p "This requires sudo privileges. Proceed? [y/N]: " confirm_sudo; \ + fi; \ + if [ "$$confirm_sudo" = "y" ] || [ "$$confirm_sudo" = "Y" ]; then \ + sudo apt-get install aspell aspell-en; \ + else \ + echo "Installation cancelled."; \ + fi \ + } +pa11y-install: + @type $(PA11Y) >/dev/null 2>&1 || { \ + echo "Installing \"pa11y\" from npm... \n"; \ + mkdir -p $(SPHINXDIR)/node_modules/ ; \ + npm install --prefix $(SPHINXDIR) pa11y; \ + } + +install: $(VENVDIR) + +run: install + . $(VENV); $(VENVDIR)/bin/sphinx-autobuild -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) + +# Doesn't depend on $(BUILDDIR) to rebuild properly at every run. +html: install + . $(VENV); $(SPHINXBUILD) -W --keep-going -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) + +epub: install + . $(VENV); $(SPHINXBUILD) -b epub "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) + +serve: html + cd "$(BUILDDIR)"; python3 -m http.server --bind 127.0.0.1 8000 + +clean: clean-doc + @test ! -e "$(VENVDIR)" -o -d "$(VENVDIR)" -a "$(abspath $(VENVDIR))" != "$(VENVDIR)" + rm -rf $(VENVDIR) + rm -rf $(SPHINXDIR)/node_modules/ + rm -rf $(SPHINXDIR)/styles + rm -rf $(SPHINXDIR)/vale.ini + +clean-doc: + git clean -fx "$(BUILDDIR)" + rm -rf $(SPHINXDIR)/.doctrees + +spellcheck: spellcheck-install + . $(VENV) ; python3 -m pyspelling -c $(SPHINXDIR)/spellingcheck.yaml -j $(shell nproc) + +spelling: html spellcheck + +linkcheck: install + . $(VENV) ; $(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) || { grep --color -F "[broken]" "$(BUILDDIR)/output.txt"; exit 1; } + exit 0 + +woke: woke-install + woke $(ALLFILES) --exit-1-on-failure \ +-c https://raw.githubusercontent.com/canonical/Inclusive-naming/main/config.yml + +pa11y: pa11y-install html + find $(BUILDDIR) -name *.html -print0 | xargs -n 1 -0 $(PA11Y) + +vale: install + @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale + @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py + @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; + @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt + @cat $(SPHINXDIR)/.wordlist.txt $(SOURCEDIR)/.custom_wordlist.txt >> $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt + @echo "" + @echo "Running Vale against $(TARGET). To change target set TARGET= with make command" + @echo "" + @. $(VENV); vale --config "$(SPHINXDIR)/vale.ini" --glob='*.{md,txt,rst}' $(TARGET) || true + @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt && rm $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt + +pdf-prep: install + @for packageName in $(REQPDFPACKS); do (dpkg-query -W -f='$${Status}' $$packageName 2>/dev/null | \ + grep -c "ok installed" >/dev/null && echo "Package $$packageName is installed") && continue || \ + (echo "\nPDF generation requires the installation of the following packages: $(REQPDFPACKS)" && \ + echo "" && echo "Run 'sudo make pdf-prep-force' to install these packages" && echo "" && echo \ + "Please be aware these packages will be installed to your system") && exit 1 ; done + +pdf-prep-force: + apt-get update + apt-get upgrade -y + apt-get install --no-install-recommends -y $(REQPDFPACKS) \ + +pdf: pdf-prep + @. $(VENV); sphinx-build -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) + @rm ./$(BUILDDIR)/latex/front-page-light.pdf || true + @rm ./$(BUILDDIR)/latex/normal-page-footer.pdf || true + @find ./$(BUILDDIR)/latex -name "*.pdf" -exec mv -t ./$(BUILDDIR) {} + + @rm -r $(BUILDDIR)/latex + @echo "\nOutput can be found in ./$(BUILDDIR)\n" + +allmetrics: html + @echo "Recording documentation metrics..." + @echo "Checking for existence of vale..." + . $(VENV) + @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale + @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py + @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; + @eval '$(METRICSDIR)/source_metrics.sh $(PWD)' + @eval '$(METRICSDIR)/build_metrics.sh $(PWD) $(METRICSDIR)' + + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: - $(MAKE) -f Makefile.sp sp-$@ + . $(VENV); $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/canonicalk8s/Makefile.sp b/docs/canonicalk8s/Makefile.sp deleted file mode 100644 index 9e0b69fe3..000000000 --- a/docs/canonicalk8s/Makefile.sp +++ /dev/null @@ -1,156 +0,0 @@ -# Minimal makefile for Sphinx documentation -# -# `Makefile.sp` is from the Sphinx starter pack and should not be -# modified. -# Add your customisation to `Makefile` instead. - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXDIR = .sphinx -SPHINXOPTS ?= -c . -d $(SPHINXDIR)/.doctrees -j auto -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -METRICSDIR = ./metrics -BUILDDIR = ../_build -VENVDIR = $(SPHINXDIR)/venv -PA11Y = $(SPHINXDIR)/node_modules/pa11y/bin/pa11y.js --config $(SPHINXDIR)/pa11y.json -VENV = $(VENVDIR)/bin/activate -TARGET = * -ALLFILES = *.rst **/*.rst -ADDPREREQS ?= -REQPDFPACKS = latexmk fonts-freefont-otf texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-font-utils texlive-lang-cjk texlive-xetex plantuml xindy tex-gyre dvipng - -.PHONY: sp-full-help sp-woke-install sp-pa11y-install sp-install sp-run sp-html \ - sp-epub sp-serve sp-clean sp-clean-doc sp-spelling sp-spellcheck sp-linkcheck sp-woke \ - sp-allmetrics sp-pa11y sp-pdf-prep-force sp-pdf-prep sp-pdf Makefile.sp sp-vale sp-bash - -sp-full-help: $(VENVDIR) - @. $(VENV); $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - @echo "\n\033[1;31mNOTE: This help texts shows unsupported targets!\033[0m" - @echo "Run 'make help' to see supported targets." - -# Shouldn't assume that venv is available on Ubuntu by default; discussion here: -# https://bugs.launchpad.net/ubuntu/+source/python3.4/+bug/1290847 -$(SPHINXDIR)/requirements.txt: - @python3 -c "import venv" || \ - (echo "You must install python3-venv before you can build the documentation."; exit 1) - python3 -m venv $(VENVDIR) - @if [ ! -z "$(ADDPREREQS)" ]; then \ - . $(VENV); pip install \ - $(PIPOPTS) --require-virtualenv $(ADDPREREQS); \ - fi - . $(VENV); python3 $(SPHINXDIR)/build_requirements.py - -# If requirements are updated, venv should be rebuilt and timestamped. -$(VENVDIR): $(SPHINXDIR)/requirements.txt - @echo "... setting up virtualenv" - python3 -m venv $(VENVDIR) - . $(VENV); pip install $(PIPOPTS) --require-virtualenv \ - --upgrade -r $(SPHINXDIR)/requirements.txt \ - --log $(VENVDIR)/pip_install.log - @test ! -f $(VENVDIR)/pip_list.txt || \ - mv $(VENVDIR)/pip_list.txt $(VENVDIR)/pip_list.txt.bak - @. $(VENV); pip list --local --format=freeze > $(VENVDIR)/pip_list.txt - @touch $(VENVDIR) - -sp-woke-install: - @type woke >/dev/null 2>&1 || \ - { echo "Installing \"woke\" snap... \n"; sudo snap install woke; } - -sp-pa11y-install: - @type $(PA11Y) >/dev/null 2>&1 || { \ - echo "Installing \"pa11y\" from npm... \n"; \ - mkdir -p $(SPHINXDIR)/node_modules/ ; \ - npm install --prefix $(SPHINXDIR) pa11y; \ - } - -sp-install: $(VENVDIR) - -sp-run: sp-install - . $(VENV); sphinx-autobuild -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) - -# Doesn't depend on $(BUILDDIR) to rebuild properly at every run. -sp-html: sp-install - . $(VENV); $(SPHINXBUILD) -W --keep-going -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) - -sp-epub: sp-install - . $(VENV); $(SPHINXBUILD) -b epub "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) - -sp-serve: sp-html - cd "$(BUILDDIR)"; python3 -m http.server --bind 127.0.0.1 8000 - -sp-clean: sp-clean-doc - @test ! -e "$(VENVDIR)" -o -d "$(VENVDIR)" -a "$(abspath $(VENVDIR))" != "$(VENVDIR)" - rm -rf $(VENVDIR) - rm -f $(SPHINXDIR)/requirements.txt - rm -rf $(SPHINXDIR)/node_modules/ - rm -rf $(SPHINXDIR)/styles - rm -rf $(SPHINXDIR)/vale.ini - -sp-clean-doc: - git clean -fx "$(BUILDDIR)" - rm -rf $(SPHINXDIR)/.doctrees - -sp-spellcheck: - . $(VENV) ; python3 -m pyspelling -c $(SPHINXDIR)/spellingcheck.yaml -j $(shell nproc) - -sp-spelling: sp-html sp-spellcheck - -sp-linkcheck: sp-install - . $(VENV) ; $(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) || { grep --color -F "[broken]" "$(BUILDDIR)/output.txt"; exit 1; } - exit 0 - -sp-woke: sp-woke-install - woke $(ALLFILES) --exit-1-on-failure \ - -c https://github.com/canonical/Inclusive-naming/raw/main/config.yml - -sp-pa11y: sp-pa11y-install sp-html - find $(BUILDDIR) -name *.html -print0 | xargs -n 1 -0 $(PA11Y) - -sp-vale: sp-install - @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale - @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py - @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; - @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt - @cat ./src/.wordlist.txt ./src/.custom_wordlist.txt >> $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt - @echo "" - @echo "Running Vale against $(TARGET). To change target set TARGET= with make command" - @echo "" - @. $(VENV); vale --config "$(SPHINXDIR)/vale.ini" --glob='*.{md,txt,rst}' $(TARGET) || true - @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt && rm $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt - -sp-pdf-prep: sp-install - @for packageName in $(REQPDFPACKS); do (dpkg-query -W -f='$${Status}' $$packageName 2>/dev/null | \ - grep -c "ok installed" >/dev/null && echo "Package $$packageName is installed") && continue || \ - (echo "\nPDF generation requires the installation of the following packages: $(REQPDFPACKS)" && \ - echo "" && echo "Run sudo make pdf-prep-force to install these packages" && echo "" && echo \ - "Please be aware these packages will be installed to your system") && exit 1 ; done - -sp-pdf-prep-force: - apt-get update - apt-get upgrade -y - apt-get install --no-install-recommends -y $(REQPDFPACKS) \ - -sp-pdf: sp-pdf-prep - @. $(VENV); sphinx-build -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) - @rm ./$(BUILDDIR)/latex/front-page-light.pdf || true - @rm ./$(BUILDDIR)/latex/normal-page-footer.pdf || true - @find ./$(BUILDDIR)/latex -name "*.pdf" -exec mv -t ./$(BUILDDIR) {} + - @rm -r $(BUILDDIR)/latex - @echo "\nOutput can be found in ./$(BUILDDIR)\n" - -sp-allmetrics: sp-html - @echo "Recording documentation metrics..." - @echo "Checking for existence of vale..." - . $(VENV) - @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale - @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py - @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; - @eval '$(METRICSDIR)/scripts/source_metrics.sh $(PWD)' - @eval '$(METRICSDIR)/scripts/build_metrics.sh $(PWD) $(METRICSDIR)' - - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile.sp - . $(VENV); $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/src/_parts/bootstrap_config.md b/docs/canonicalk8s/_parts/bootstrap_config.md similarity index 100% rename from docs/src/_parts/bootstrap_config.md rename to docs/canonicalk8s/_parts/bootstrap_config.md diff --git a/docs/src/_parts/commands/k8s.md b/docs/canonicalk8s/_parts/commands/k8s.md similarity index 100% rename from docs/src/_parts/commands/k8s.md rename to docs/canonicalk8s/_parts/commands/k8s.md diff --git a/docs/src/_parts/commands/k8s_bootstrap.md b/docs/canonicalk8s/_parts/commands/k8s_bootstrap.md similarity index 100% rename from docs/src/_parts/commands/k8s_bootstrap.md rename to docs/canonicalk8s/_parts/commands/k8s_bootstrap.md diff --git a/docs/src/_parts/commands/k8s_completion.md b/docs/canonicalk8s/_parts/commands/k8s_completion.md similarity index 100% rename from docs/src/_parts/commands/k8s_completion.md rename to docs/canonicalk8s/_parts/commands/k8s_completion.md diff --git a/docs/src/_parts/commands/k8s_completion_bash.md b/docs/canonicalk8s/_parts/commands/k8s_completion_bash.md similarity index 100% rename from docs/src/_parts/commands/k8s_completion_bash.md rename to docs/canonicalk8s/_parts/commands/k8s_completion_bash.md diff --git a/docs/src/_parts/commands/k8s_completion_fish.md b/docs/canonicalk8s/_parts/commands/k8s_completion_fish.md similarity index 100% rename from docs/src/_parts/commands/k8s_completion_fish.md rename to docs/canonicalk8s/_parts/commands/k8s_completion_fish.md diff --git a/docs/src/_parts/commands/k8s_completion_powershell.md b/docs/canonicalk8s/_parts/commands/k8s_completion_powershell.md similarity index 100% rename from docs/src/_parts/commands/k8s_completion_powershell.md rename to docs/canonicalk8s/_parts/commands/k8s_completion_powershell.md diff --git a/docs/src/_parts/commands/k8s_completion_zsh.md b/docs/canonicalk8s/_parts/commands/k8s_completion_zsh.md similarity index 100% rename from docs/src/_parts/commands/k8s_completion_zsh.md rename to docs/canonicalk8s/_parts/commands/k8s_completion_zsh.md diff --git a/docs/src/_parts/commands/k8s_config.md b/docs/canonicalk8s/_parts/commands/k8s_config.md similarity index 100% rename from docs/src/_parts/commands/k8s_config.md rename to docs/canonicalk8s/_parts/commands/k8s_config.md diff --git a/docs/src/_parts/commands/k8s_disable.md b/docs/canonicalk8s/_parts/commands/k8s_disable.md similarity index 100% rename from docs/src/_parts/commands/k8s_disable.md rename to docs/canonicalk8s/_parts/commands/k8s_disable.md diff --git a/docs/src/_parts/commands/k8s_enable.md b/docs/canonicalk8s/_parts/commands/k8s_enable.md similarity index 100% rename from docs/src/_parts/commands/k8s_enable.md rename to docs/canonicalk8s/_parts/commands/k8s_enable.md diff --git a/docs/src/_parts/commands/k8s_get-join-token.md b/docs/canonicalk8s/_parts/commands/k8s_get-join-token.md similarity index 100% rename from docs/src/_parts/commands/k8s_get-join-token.md rename to docs/canonicalk8s/_parts/commands/k8s_get-join-token.md diff --git a/docs/src/_parts/commands/k8s_get.md b/docs/canonicalk8s/_parts/commands/k8s_get.md similarity index 100% rename from docs/src/_parts/commands/k8s_get.md rename to docs/canonicalk8s/_parts/commands/k8s_get.md diff --git a/docs/src/_parts/commands/k8s_inspect.md b/docs/canonicalk8s/_parts/commands/k8s_inspect.md similarity index 100% rename from docs/src/_parts/commands/k8s_inspect.md rename to docs/canonicalk8s/_parts/commands/k8s_inspect.md diff --git a/docs/src/_parts/commands/k8s_join-cluster.md b/docs/canonicalk8s/_parts/commands/k8s_join-cluster.md similarity index 100% rename from docs/src/_parts/commands/k8s_join-cluster.md rename to docs/canonicalk8s/_parts/commands/k8s_join-cluster.md diff --git a/docs/src/_parts/commands/k8s_kubectl.md b/docs/canonicalk8s/_parts/commands/k8s_kubectl.md similarity index 100% rename from docs/src/_parts/commands/k8s_kubectl.md rename to docs/canonicalk8s/_parts/commands/k8s_kubectl.md diff --git a/docs/src/_parts/commands/k8s_refresh-certs.md b/docs/canonicalk8s/_parts/commands/k8s_refresh-certs.md similarity index 100% rename from docs/src/_parts/commands/k8s_refresh-certs.md rename to docs/canonicalk8s/_parts/commands/k8s_refresh-certs.md diff --git a/docs/src/_parts/commands/k8s_remove-node.md b/docs/canonicalk8s/_parts/commands/k8s_remove-node.md similarity index 100% rename from docs/src/_parts/commands/k8s_remove-node.md rename to docs/canonicalk8s/_parts/commands/k8s_remove-node.md diff --git a/docs/src/_parts/commands/k8s_set.md b/docs/canonicalk8s/_parts/commands/k8s_set.md similarity index 100% rename from docs/src/_parts/commands/k8s_set.md rename to docs/canonicalk8s/_parts/commands/k8s_set.md diff --git a/docs/src/_parts/commands/k8s_status.md b/docs/canonicalk8s/_parts/commands/k8s_status.md similarity index 100% rename from docs/src/_parts/commands/k8s_status.md rename to docs/canonicalk8s/_parts/commands/k8s_status.md diff --git a/docs/src/_parts/common_hardening.md b/docs/canonicalk8s/_parts/common_hardening.md similarity index 100% rename from docs/src/_parts/common_hardening.md rename to docs/canonicalk8s/_parts/common_hardening.md diff --git a/docs/src/_parts/control_plane_join_config.md b/docs/canonicalk8s/_parts/control_plane_join_config.md similarity index 100% rename from docs/src/_parts/control_plane_join_config.md rename to docs/canonicalk8s/_parts/control_plane_join_config.md diff --git a/docs/src/_parts/doc-cheat-sheet-myst.md b/docs/canonicalk8s/_parts/doc-cheat-sheet-myst.md similarity index 100% rename from docs/src/_parts/doc-cheat-sheet-myst.md rename to docs/canonicalk8s/_parts/doc-cheat-sheet-myst.md diff --git a/docs/src/_parts/doc-cheat-sheet.rst b/docs/canonicalk8s/_parts/doc-cheat-sheet.rst similarity index 100% rename from docs/src/_parts/doc-cheat-sheet.rst rename to docs/canonicalk8s/_parts/doc-cheat-sheet.rst diff --git a/docs/src/_parts/install.md b/docs/canonicalk8s/_parts/install.md similarity index 100% rename from docs/src/_parts/install.md rename to docs/canonicalk8s/_parts/install.md diff --git a/docs/src/_parts/readme.rst b/docs/canonicalk8s/_parts/readme.rst similarity index 100% rename from docs/src/_parts/readme.rst rename to docs/canonicalk8s/_parts/readme.rst diff --git a/docs/src/_parts/template-explanation b/docs/canonicalk8s/_parts/template-explanation similarity index 100% rename from docs/src/_parts/template-explanation rename to docs/canonicalk8s/_parts/template-explanation diff --git a/docs/src/_parts/template-howto b/docs/canonicalk8s/_parts/template-howto similarity index 100% rename from docs/src/_parts/template-howto rename to docs/canonicalk8s/_parts/template-howto diff --git a/docs/src/_parts/template-reference b/docs/canonicalk8s/_parts/template-reference similarity index 100% rename from docs/src/_parts/template-reference rename to docs/canonicalk8s/_parts/template-reference diff --git a/docs/src/_parts/template-tutorial b/docs/canonicalk8s/_parts/template-tutorial similarity index 100% rename from docs/src/_parts/template-tutorial rename to docs/canonicalk8s/_parts/template-tutorial diff --git a/docs/src/_parts/worker_join_config.md b/docs/canonicalk8s/_parts/worker_join_config.md similarity index 100% rename from docs/src/_parts/worker_join_config.md rename to docs/canonicalk8s/_parts/worker_join_config.md diff --git a/docs/canonicalk8s/about.md b/docs/canonicalk8s/about.md new file mode 100644 index 000000000..76fad001a --- /dev/null +++ b/docs/canonicalk8s/about.md @@ -0,0 +1,2 @@ +```{include} /snap/explanation/about.md +``` diff --git a/docs/src/assets/arch.dsl b/docs/canonicalk8s/assets/arch.dsl similarity index 100% rename from docs/src/assets/arch.dsl rename to docs/canonicalk8s/assets/arch.dsl diff --git a/docs/src/assets/capi-ck8s.svg b/docs/canonicalk8s/assets/capi-ck8s.svg similarity index 100% rename from docs/src/assets/capi-ck8s.svg rename to docs/canonicalk8s/assets/capi-ck8s.svg diff --git a/docs/src/assets/charm-arch.dsl b/docs/canonicalk8s/assets/charm-arch.dsl similarity index 100% rename from docs/src/assets/charm-arch.dsl rename to docs/canonicalk8s/assets/charm-arch.dsl diff --git a/docs/src/assets/charms-architecture.puml b/docs/canonicalk8s/assets/charms-architecture.puml similarity index 100% rename from docs/src/assets/charms-architecture.puml rename to docs/canonicalk8s/assets/charms-architecture.puml diff --git a/docs/src/assets/ck-cluster.puml b/docs/canonicalk8s/assets/ck-cluster.puml similarity index 100% rename from docs/src/assets/ck-cluster.puml rename to docs/canonicalk8s/assets/ck-cluster.puml diff --git a/docs/src/assets/configuration.yaml b/docs/canonicalk8s/assets/configuration.yaml similarity index 100% rename from docs/src/assets/configuration.yaml rename to docs/canonicalk8s/assets/configuration.yaml diff --git a/docs/src/assets/example-bootstrap-config.yaml b/docs/canonicalk8s/assets/example-bootstrap-config.yaml similarity index 100% rename from docs/src/assets/example-bootstrap-config.yaml rename to docs/canonicalk8s/assets/example-bootstrap-config.yaml diff --git a/docs/src/assets/how-to-cloud-storage-aws-ccm.yaml b/docs/canonicalk8s/assets/how-to-cloud-storage-aws-ccm.yaml similarity index 100% rename from docs/src/assets/how-to-cloud-storage-aws-ccm.yaml rename to docs/canonicalk8s/assets/how-to-cloud-storage-aws-ccm.yaml diff --git a/docs/src/assets/how-to-dualstack-manifest.yaml b/docs/canonicalk8s/assets/how-to-dualstack-manifest.yaml similarity index 100% rename from docs/src/assets/how-to-dualstack-manifest.yaml rename to docs/canonicalk8s/assets/how-to-dualstack-manifest.yaml diff --git a/docs/src/assets/how-to-epa-maas-cloud-init b/docs/canonicalk8s/assets/how-to-epa-maas-cloud-init similarity index 100% rename from docs/src/assets/how-to-epa-maas-cloud-init rename to docs/canonicalk8s/assets/how-to-epa-maas-cloud-init diff --git a/docs/src/assets/how-to-ipv6-only-manifest.yaml b/docs/canonicalk8s/assets/how-to-ipv6-only-manifest.yaml similarity index 100% rename from docs/src/assets/how-to-ipv6-only-manifest.yaml rename to docs/canonicalk8s/assets/how-to-ipv6-only-manifest.yaml diff --git a/docs/src/assets/ingress.puml b/docs/canonicalk8s/assets/ingress.puml similarity index 100% rename from docs/src/assets/ingress.puml rename to docs/canonicalk8s/assets/ingress.puml diff --git a/docs/src/assets/k8s-container.puml b/docs/canonicalk8s/assets/k8s-container.puml similarity index 100% rename from docs/src/assets/k8s-container.puml rename to docs/canonicalk8s/assets/k8s-container.puml diff --git a/docs/src/assets/k8s-services.puml b/docs/canonicalk8s/assets/k8s-services.puml similarity index 100% rename from docs/src/assets/k8s-services.puml rename to docs/canonicalk8s/assets/k8s-services.puml diff --git a/docs/src/assets/k8sd-component.puml b/docs/canonicalk8s/assets/k8sd-component.puml similarity index 100% rename from docs/src/assets/k8sd-component.puml rename to docs/canonicalk8s/assets/k8sd-component.puml diff --git a/docs/src/assets/overview.puml b/docs/canonicalk8s/assets/overview.puml similarity index 100% rename from docs/src/assets/overview.puml rename to docs/canonicalk8s/assets/overview.puml diff --git a/docs/src/assets/roadmap.csv b/docs/canonicalk8s/assets/roadmap.csv similarity index 100% rename from docs/src/assets/roadmap.csv rename to docs/canonicalk8s/assets/roadmap.csv diff --git a/docs/src/assets/tutorial-pod-with-pvc.yaml b/docs/canonicalk8s/assets/tutorial-pod-with-pvc.yaml similarity index 100% rename from docs/src/assets/tutorial-pod-with-pvc.yaml rename to docs/canonicalk8s/assets/tutorial-pod-with-pvc.yaml diff --git a/docs/canonicalk8s/capi/explanation/about.md b/docs/canonicalk8s/capi/explanation/about.md new file mode 100644 index 000000000..76fad001a --- /dev/null +++ b/docs/canonicalk8s/capi/explanation/about.md @@ -0,0 +1,2 @@ +```{include} /snap/explanation/about.md +``` diff --git a/docs/src/capi/explanation/capi-ck8s.md b/docs/canonicalk8s/capi/explanation/capi-ck8s.md similarity index 97% rename from docs/src/capi/explanation/capi-ck8s.md rename to docs/canonicalk8s/capi/explanation/capi-ck8s.md index 67f3f77f2..a9f444651 100644 --- a/docs/src/capi/explanation/capi-ck8s.md +++ b/docs/canonicalk8s/capi/explanation/capi-ck8s.md @@ -29,7 +29,7 @@ With {{product}} CAPI you can: - rolling upgrades for HA clusters and worker nodes - in-place upgrades for non-HA control planes and worker nodes -Please refer to the [tutorial section] for concrete examples on CAPI +Please refer to the [tutorial section] for concrete examples on CAPI deployments. ## CAPI architecture @@ -57,11 +57,11 @@ resources necessary for creating and managing additional Kubernetes clusters. It is important to note that the management cluster is not intended to support any other workload, as the workloads are expected to run on the provisioned clusters. As a result, the provisioned clusters are referred to as workload -clusters. While CAPI providers mostly live on the management cluster, it's -also possible to maintain the them in the workload cluster. +clusters. While CAPI providers mostly live on the management cluster, it's +also possible to maintain the them in the workload cluster. Read more about this in the [upstream docs around pivoting]. -The {{product}} team maintains the two providers required for integrating +The {{product}} team maintains the two providers required for integrating with CAPI: - The Cluster API Bootstrap Provider {{product}} (**CABPCK**) responsible for @@ -91,5 +91,5 @@ with CAPI: ``` -[tutorial section]: ./tutorial +[tutorial section]: ../tutorial/index [upstream docs around pivoting]: https://cluster-api.sigs.k8s.io/clusterctl/commands/move#pivot diff --git a/docs/src/capi/explanation/in-place-upgrades.md b/docs/canonicalk8s/capi/explanation/in-place-upgrades.md similarity index 100% rename from docs/src/capi/explanation/in-place-upgrades.md rename to docs/canonicalk8s/capi/explanation/in-place-upgrades.md diff --git a/docs/src/capi/explanation/index.md b/docs/canonicalk8s/capi/explanation/index.md similarity index 100% rename from docs/src/capi/explanation/index.md rename to docs/canonicalk8s/capi/explanation/index.md diff --git a/docs/src/capi/explanation/ingress.md b/docs/canonicalk8s/capi/explanation/ingress.md similarity index 100% rename from docs/src/capi/explanation/ingress.md rename to docs/canonicalk8s/capi/explanation/ingress.md diff --git a/docs/src/capi/explanation/installation-methods.md b/docs/canonicalk8s/capi/explanation/installation-methods.md similarity index 100% rename from docs/src/capi/explanation/installation-methods.md rename to docs/canonicalk8s/capi/explanation/installation-methods.md diff --git a/docs/src/capi/explanation/load-balancer.md b/docs/canonicalk8s/capi/explanation/load-balancer.md similarity index 100% rename from docs/src/capi/explanation/load-balancer.md rename to docs/canonicalk8s/capi/explanation/load-balancer.md diff --git a/docs/src/capi/explanation/security.md b/docs/canonicalk8s/capi/explanation/security.md similarity index 100% rename from docs/src/capi/explanation/security.md rename to docs/canonicalk8s/capi/explanation/security.md diff --git a/docs/src/capi/howto/custom-ck8s.md b/docs/canonicalk8s/capi/howto/custom-ck8s.md similarity index 100% rename from docs/src/capi/howto/custom-ck8s.md rename to docs/canonicalk8s/capi/howto/custom-ck8s.md diff --git a/docs/src/capi/howto/external-etcd.md b/docs/canonicalk8s/capi/howto/external-etcd.md similarity index 100% rename from docs/src/capi/howto/external-etcd.md rename to docs/canonicalk8s/capi/howto/external-etcd.md diff --git a/docs/src/capi/howto/in-place-upgrades.md b/docs/canonicalk8s/capi/howto/in-place-upgrades.md similarity index 100% rename from docs/src/capi/howto/in-place-upgrades.md rename to docs/canonicalk8s/capi/howto/in-place-upgrades.md diff --git a/docs/src/capi/howto/index.md b/docs/canonicalk8s/capi/howto/index.md similarity index 100% rename from docs/src/capi/howto/index.md rename to docs/canonicalk8s/capi/howto/index.md diff --git a/docs/src/capi/howto/migrate-management.md b/docs/canonicalk8s/capi/howto/migrate-management.md similarity index 100% rename from docs/src/capi/howto/migrate-management.md rename to docs/canonicalk8s/capi/howto/migrate-management.md diff --git a/docs/src/capi/howto/provision.md b/docs/canonicalk8s/capi/howto/provision.md similarity index 100% rename from docs/src/capi/howto/provision.md rename to docs/canonicalk8s/capi/howto/provision.md diff --git a/docs/src/capi/howto/refresh-certs.md b/docs/canonicalk8s/capi/howto/refresh-certs.md similarity index 100% rename from docs/src/capi/howto/refresh-certs.md rename to docs/canonicalk8s/capi/howto/refresh-certs.md diff --git a/docs/src/capi/howto/rollout-upgrades.md b/docs/canonicalk8s/capi/howto/rollout-upgrades.md similarity index 100% rename from docs/src/capi/howto/rollout-upgrades.md rename to docs/canonicalk8s/capi/howto/rollout-upgrades.md diff --git a/docs/src/capi/howto/troubleshooting.md b/docs/canonicalk8s/capi/howto/troubleshooting.md similarity index 100% rename from docs/src/capi/howto/troubleshooting.md rename to docs/canonicalk8s/capi/howto/troubleshooting.md diff --git a/docs/src/capi/howto/upgrade-providers.md b/docs/canonicalk8s/capi/howto/upgrade-providers.md similarity index 100% rename from docs/src/capi/howto/upgrade-providers.md rename to docs/canonicalk8s/capi/howto/upgrade-providers.md diff --git a/docs/src/capi/index.md b/docs/canonicalk8s/capi/index.md similarity index 100% rename from docs/src/capi/index.md rename to docs/canonicalk8s/capi/index.md diff --git a/docs/src/capi/reference/annotations.md b/docs/canonicalk8s/capi/reference/annotations.md similarity index 100% rename from docs/src/capi/reference/annotations.md rename to docs/canonicalk8s/capi/reference/annotations.md diff --git a/docs/src/capi/reference/community.md b/docs/canonicalk8s/capi/reference/community.md similarity index 100% rename from docs/src/capi/reference/community.md rename to docs/canonicalk8s/capi/reference/community.md diff --git a/docs/src/capi/reference/configs.md b/docs/canonicalk8s/capi/reference/configs.md similarity index 100% rename from docs/src/capi/reference/configs.md rename to docs/canonicalk8s/capi/reference/configs.md diff --git a/docs/src/capi/reference/index.md b/docs/canonicalk8s/capi/reference/index.md similarity index 100% rename from docs/src/capi/reference/index.md rename to docs/canonicalk8s/capi/reference/index.md diff --git a/docs/canonicalk8s/capi/reference/ports-and-services.md b/docs/canonicalk8s/capi/reference/ports-and-services.md new file mode 100644 index 000000000..5431b794c --- /dev/null +++ b/docs/canonicalk8s/capi/reference/ports-and-services.md @@ -0,0 +1,2 @@ +```{include} /snap/reference/ports-and-services.md +``` diff --git a/docs/src/capi/reference/releases.md b/docs/canonicalk8s/capi/reference/releases.md similarity index 100% rename from docs/src/capi/reference/releases.md rename to docs/canonicalk8s/capi/reference/releases.md diff --git a/docs/src/capi/tutorial/getting-started.md b/docs/canonicalk8s/capi/tutorial/getting-started.md similarity index 98% rename from docs/src/capi/tutorial/getting-started.md rename to docs/canonicalk8s/capi/tutorial/getting-started.md index 88a94b31e..1d96e9925 100644 --- a/docs/src/capi/tutorial/getting-started.md +++ b/docs/canonicalk8s/capi/tutorial/getting-started.md @@ -15,7 +15,8 @@ curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.9.3/ sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl ``` -For more `clusterctl` versions refer to the [upstream release page][clusterctl-release-page]. +For more `clusterctl` versions refer to the +[upstream release page][clusterctl-release-page]. ## Set up a management cluster @@ -57,7 +58,7 @@ sudo mv clusterawsadm /usr/local/bin ``` `clusterawsadm` helps you bootstrapping the AWS environment that CAPI will use. -It will also create the necessary IAM roles for you. For more `clusterawsadm` +It will also create the necessary IAM roles for you. For more `clusterawsadm` versions refer to the [upstream release page][clusterawsadm-release-page]. Start by setting up environment variables defining the AWS account to use, if diff --git a/docs/src/capi/tutorial/index.md b/docs/canonicalk8s/capi/tutorial/index.md similarity index 100% rename from docs/src/capi/tutorial/index.md rename to docs/canonicalk8s/capi/tutorial/index.md diff --git a/docs/src/charm/explanation/about.md b/docs/canonicalk8s/charm/explanation/about.md similarity index 100% rename from docs/src/charm/explanation/about.md rename to docs/canonicalk8s/charm/explanation/about.md diff --git a/docs/src/charm/explanation/channels.md b/docs/canonicalk8s/charm/explanation/channels.md similarity index 100% rename from docs/src/charm/explanation/channels.md rename to docs/canonicalk8s/charm/explanation/channels.md diff --git a/docs/src/charm/explanation/index.md b/docs/canonicalk8s/charm/explanation/index.md similarity index 100% rename from docs/src/charm/explanation/index.md rename to docs/canonicalk8s/charm/explanation/index.md diff --git a/docs/src/charm/explanation/ingress.md b/docs/canonicalk8s/charm/explanation/ingress.md similarity index 100% rename from docs/src/charm/explanation/ingress.md rename to docs/canonicalk8s/charm/explanation/ingress.md diff --git a/docs/canonicalk8s/charm/explanation/installation-methods.md b/docs/canonicalk8s/charm/explanation/installation-methods.md new file mode 100644 index 000000000..bb1ea4f84 --- /dev/null +++ b/docs/canonicalk8s/charm/explanation/installation-methods.md @@ -0,0 +1,2 @@ +```{include} /snap/explanation/installation-methods.md +``` diff --git a/docs/src/charm/explanation/load-balancer.md b/docs/canonicalk8s/charm/explanation/load-balancer.md similarity index 100% rename from docs/src/charm/explanation/load-balancer.md rename to docs/canonicalk8s/charm/explanation/load-balancer.md diff --git a/docs/src/charm/explanation/security.md b/docs/canonicalk8s/charm/explanation/security.md similarity index 100% rename from docs/src/charm/explanation/security.md rename to docs/canonicalk8s/charm/explanation/security.md diff --git a/docs/src/charm/explanation/upgrade.md b/docs/canonicalk8s/charm/explanation/upgrade.md similarity index 100% rename from docs/src/charm/explanation/upgrade.md rename to docs/canonicalk8s/charm/explanation/upgrade.md diff --git a/docs/src/charm/howto/ceph-csi.md b/docs/canonicalk8s/charm/howto/ceph-csi.md similarity index 100% rename from docs/src/charm/howto/ceph-csi.md rename to docs/canonicalk8s/charm/howto/ceph-csi.md diff --git a/docs/src/charm/howto/configure-cluster.md b/docs/canonicalk8s/charm/howto/configure-cluster.md similarity index 100% rename from docs/src/charm/howto/configure-cluster.md rename to docs/canonicalk8s/charm/howto/configure-cluster.md diff --git a/docs/src/charm/howto/contribute.md b/docs/canonicalk8s/charm/howto/contribute.md similarity index 98% rename from docs/src/charm/howto/contribute.md rename to docs/canonicalk8s/charm/howto/contribute.md index dff142dca..edec28b78 100644 --- a/docs/src/charm/howto/contribute.md +++ b/docs/canonicalk8s/charm/howto/contribute.md @@ -138,5 +138,5 @@ press `F5` in your browser to reload the page without caching)! [Snapcraft documentation]: https://snapcraft.io/docs/snapcraft-setup [code repo]: https://github.com/canonical/k8s-snap [Diátaxis website]: https://diataxis.fr/ -[_parts]: https://github.com/canonical/k8s-snap/blob/main/docs/src/_parts/doc-cheat-sheet-myst.md +[_parts]: https://github.com/canonical/k8s-snap/blob/main/docs/canonicalk8s/_parts/doc-cheat-sheet-myst.md [community page]: ../reference/community diff --git a/docs/src/charm/howto/cos-lite.md b/docs/canonicalk8s/charm/howto/cos-lite.md similarity index 100% rename from docs/src/charm/howto/cos-lite.md rename to docs/canonicalk8s/charm/howto/cos-lite.md diff --git a/docs/src/charm/howto/custom-registry.md b/docs/canonicalk8s/charm/howto/custom-registry.md similarity index 100% rename from docs/src/charm/howto/custom-registry.md rename to docs/canonicalk8s/charm/howto/custom-registry.md diff --git a/docs/src/charm/howto/etcd.md b/docs/canonicalk8s/charm/howto/etcd.md similarity index 100% rename from docs/src/charm/howto/etcd.md rename to docs/canonicalk8s/charm/howto/etcd.md diff --git a/docs/src/charm/howto/index.md b/docs/canonicalk8s/charm/howto/index.md similarity index 100% rename from docs/src/charm/howto/index.md rename to docs/canonicalk8s/charm/howto/index.md diff --git a/docs/src/charm/howto/install/charm.md b/docs/canonicalk8s/charm/howto/install/charm.md similarity index 87% rename from docs/src/charm/howto/install/charm.md rename to docs/canonicalk8s/charm/howto/install/charm.md index d2367632c..49a3a25a6 100644 --- a/docs/src/charm/howto/install/charm.md +++ b/docs/canonicalk8s/charm/howto/install/charm.md @@ -37,7 +37,7 @@ page][channels] for an explanation of the different types of channel. The charm can be installed with the `juju` command: -```{literalinclude} /src/_parts/install.md +```{literalinclude} /_parts/install.md :start-after: :end-before: ``` @@ -52,8 +52,8 @@ juju status --watch 1s ``` This command will output a message confirming the charm is deployed and the -cluster is bootstrapped. It is recommended to ensure that the cluster initialises -properly and is running with no issues. +cluster is bootstrapped. It is recommended to ensure that the cluster +initialises properly and is running with no issues. Once the unit is active/idle, You'll know the cluster is installed. @@ -72,13 +72,13 @@ Use `juju status` to watch these units approach active/idle ## Adding Workers -In many cases, it is desirable to have additional 'worker only' units in the cluster. -Rather than adding more control-plane units, we'll deploy the `k8s-worker` charm. -After deployment, integrate these new nodes with control-plane units so they join -the cluster. +In many cases, it is desirable to have additional 'worker only' units in +the cluster. Rather than adding more control-plane units, we'll deploy +the `k8s-worker` charm. After deployment, integrate these new nodes with +control-plane units so they join the cluster. -```{literalinclude} /src/_parts/install.md +```{literalinclude} /_parts/install.md :start-after: :end-before: :append: juju integrate k8s k8s-worker:cluster diff --git a/docs/src/charm/howto/install/custom-workers.md b/docs/canonicalk8s/charm/howto/install/custom-workers.md similarity index 100% rename from docs/src/charm/howto/install/custom-workers.md rename to docs/canonicalk8s/charm/howto/install/custom-workers.md diff --git a/docs/src/charm/howto/install/index.md b/docs/canonicalk8s/charm/howto/install/index.md similarity index 100% rename from docs/src/charm/howto/install/index.md rename to docs/canonicalk8s/charm/howto/install/index.md diff --git a/docs/src/charm/howto/install/install-custom.md b/docs/canonicalk8s/charm/howto/install/install-custom.md similarity index 98% rename from docs/src/charm/howto/install/install-custom.md rename to docs/canonicalk8s/charm/howto/install/install-custom.md index f0fccdaef..73fbc9f8f 100644 --- a/docs/src/charm/howto/install/install-custom.md +++ b/docs/canonicalk8s/charm/howto/install/install-custom.md @@ -66,7 +66,7 @@ align with your requirements. Deploy the `k8s` charm with your custom configuration: -```{literalinclude} /src/_parts/install.md +```{literalinclude} /_parts/install.md :start-after: :end-before: ``` diff --git a/docs/src/charm/howto/install/install-lxd.md b/docs/canonicalk8s/charm/howto/install/install-lxd.md similarity index 100% rename from docs/src/charm/howto/install/install-lxd.md rename to docs/canonicalk8s/charm/howto/install/install-lxd.md diff --git a/docs/src/charm/howto/install/install-terraform.md b/docs/canonicalk8s/charm/howto/install/install-terraform.md similarity index 100% rename from docs/src/charm/howto/install/install-terraform.md rename to docs/canonicalk8s/charm/howto/install/install-terraform.md diff --git a/docs/src/charm/howto/openstack.md b/docs/canonicalk8s/charm/howto/openstack.md similarity index 97% rename from docs/src/charm/howto/openstack.md rename to docs/canonicalk8s/charm/howto/openstack.md index a54244c64..2b85fe2f8 100644 --- a/docs/src/charm/howto/openstack.md +++ b/docs/canonicalk8s/charm/howto/openstack.md @@ -71,10 +71,8 @@ deployment will take a few minutes until all the components are up and running. Resources allocated by Kubernetes or the integrator are usually cleaned up automatically when no longer needed. However, it is recommended to periodically, and particularly after tearing down a cluster, use the OpenStack administration tools to make sure all unused resources have been successfully released. ``` - - [openstack]: https://www.openstack.org/ -[proxy]: https://documentation.ubuntu.com/canonical-kubernetes/main/src/charm/howto/proxy/ +[proxy]: /charm/howto/proxy [bundle]: https://github.com/canonical/k8s-bundles/blob/main/main/bundle.yaml [openstack-overlay]: https://github.com/canonical/k8s-bundles/blob/main/overlays/openstack.yaml diff --git a/docs/src/charm/howto/proxy.md b/docs/canonicalk8s/charm/howto/proxy.md similarity index 100% rename from docs/src/charm/howto/proxy.md rename to docs/canonicalk8s/charm/howto/proxy.md diff --git a/docs/src/charm/howto/troubleshooting.md b/docs/canonicalk8s/charm/howto/troubleshooting.md similarity index 100% rename from docs/src/charm/howto/troubleshooting.md rename to docs/canonicalk8s/charm/howto/troubleshooting.md diff --git a/docs/src/charm/howto/upgrade-minor.md b/docs/canonicalk8s/charm/howto/upgrade-minor.md similarity index 100% rename from docs/src/charm/howto/upgrade-minor.md rename to docs/canonicalk8s/charm/howto/upgrade-minor.md diff --git a/docs/src/charm/howto/upgrade-patch.md b/docs/canonicalk8s/charm/howto/upgrade-patch.md similarity index 100% rename from docs/src/charm/howto/upgrade-patch.md rename to docs/canonicalk8s/charm/howto/upgrade-patch.md diff --git a/docs/src/charm/howto/validate.md b/docs/canonicalk8s/charm/howto/validate.md similarity index 100% rename from docs/src/charm/howto/validate.md rename to docs/canonicalk8s/charm/howto/validate.md diff --git a/docs/src/charm/index.md b/docs/canonicalk8s/charm/index.md similarity index 100% rename from docs/src/charm/index.md rename to docs/canonicalk8s/charm/index.md diff --git a/docs/src/charm/reference/actions.md b/docs/canonicalk8s/charm/reference/actions.md similarity index 100% rename from docs/src/charm/reference/actions.md rename to docs/canonicalk8s/charm/reference/actions.md diff --git a/docs/src/charm/reference/architecture.md b/docs/canonicalk8s/charm/reference/architecture.md similarity index 100% rename from docs/src/charm/reference/architecture.md rename to docs/canonicalk8s/charm/reference/architecture.md diff --git a/docs/src/charm/reference/charm-configurations.md b/docs/canonicalk8s/charm/reference/charm-configurations.md similarity index 100% rename from docs/src/charm/reference/charm-configurations.md rename to docs/canonicalk8s/charm/reference/charm-configurations.md diff --git a/docs/src/charm/reference/charms.md b/docs/canonicalk8s/charm/reference/charms.md similarity index 100% rename from docs/src/charm/reference/charms.md rename to docs/canonicalk8s/charm/reference/charms.md diff --git a/docs/src/charm/reference/community.md b/docs/canonicalk8s/charm/reference/community.md similarity index 100% rename from docs/src/charm/reference/community.md rename to docs/canonicalk8s/charm/reference/community.md diff --git a/docs/src/charm/reference/index.md b/docs/canonicalk8s/charm/reference/index.md similarity index 100% rename from docs/src/charm/reference/index.md rename to docs/canonicalk8s/charm/reference/index.md diff --git a/docs/canonicalk8s/charm/reference/ports-and-services.md b/docs/canonicalk8s/charm/reference/ports-and-services.md new file mode 100644 index 000000000..5431b794c --- /dev/null +++ b/docs/canonicalk8s/charm/reference/ports-and-services.md @@ -0,0 +1,2 @@ +```{include} /snap/reference/ports-and-services.md +``` diff --git a/docs/src/charm/reference/proxy.md b/docs/canonicalk8s/charm/reference/proxy.md similarity index 100% rename from docs/src/charm/reference/proxy.md rename to docs/canonicalk8s/charm/reference/proxy.md diff --git a/docs/src/charm/reference/releases.md b/docs/canonicalk8s/charm/reference/releases.md similarity index 95% rename from docs/src/charm/reference/releases.md rename to docs/canonicalk8s/charm/reference/releases.md index fa7990dbf..9d5cf57c9 100644 --- a/docs/src/charm/reference/releases.md +++ b/docs/canonicalk8s/charm/reference/releases.md @@ -10,7 +10,7 @@ new features, bug fixes and backwards-incompatible changes. ```{toctree} :titlesonly: :maxdepth: 2 -/src/charm/reference/versions/1.32 +/charm/reference/versions/1.32 ``` diff --git a/docs/src/charm/reference/troubleshooting.md b/docs/canonicalk8s/charm/reference/troubleshooting.md similarity index 100% rename from docs/src/charm/reference/troubleshooting.md rename to docs/canonicalk8s/charm/reference/troubleshooting.md diff --git a/docs/src/charm/reference/versions/1.32.md b/docs/canonicalk8s/charm/reference/versions/1.32.md similarity index 93% rename from docs/src/charm/reference/versions/1.32.md rename to docs/canonicalk8s/charm/reference/versions/1.32.md index 752d15ca9..e9dcd044a 100644 --- a/docs/src/charm/reference/versions/1.32.md +++ b/docs/canonicalk8s/charm/reference/versions/1.32.md @@ -2,35 +2,35 @@ **{{product}} Charms 1.32 - Release notes - 20 December 2024** -Welcome to the 1.32 release of {{product}} charms, the Juju operators +Welcome to the 1.32 release of {{product}} charms, the Juju operators for {{product}}! These release notes cover the highlights of this release. ## What’s new -- **Kubernetes 1.32** - read more about the upstream release +- **Kubernetes 1.32** - read more about the upstream release [here][upstream release]. -- **{{product}} Snap 1.32** - read more about the snap release +- **{{product}} Snap 1.32** - read more about the snap release [here][snap release page]. -- **Reschedule Update Hook** - use systemd to reschedule `update-status` +- **Reschedule Update Hook** - use systemd to reschedule `update-status` hooks [#118]. -- **Override Installed Snap** - support a charm resource to override the +- **Override Installed Snap** - support a charm resource to override the installed snap [#149]. -- **Snap Refresh** - allow for a snap refresh if the charm wishes to refresh +- **Snap Refresh** - allow for a snap refresh if the charm wishes to refresh the same revision/channel or use a resource override [#166]. -- **Feature Configurations** - expose {{product}} snap feature config through +- **Feature Configurations** - expose {{product}} snap feature config through charm config [charm config]. -- **Terraform Modules** - add basic Terraform modules for the {{product}} +- **Terraform Modules** - add basic Terraform modules for the {{product}} charms [#194]. -- **Upgrade Orchestration** - introduce upgrade orchestration for control +- **Upgrade Orchestration** - introduce upgrade orchestration for control plane nodes [#200]. -- **Multiple Worker Integration** - allow the `k8s` charm to integrate with +- **Multiple Worker Integration** - allow the `k8s` charm to integrate with multiple `k8s-worker` units [#221]. ## Bug fixes - Worker goes into error after the control plane departed [#75][issue #75] -- Control plane does not go into blocked when no relation to worker +- Control plane does not go into blocked when no relation to worker [#90][issue #90] - Enable and configure `Loadbalancer` feature [#109][issue #109] - Enable and configure `LocalStorage` feature [#110][issue #110] @@ -39,7 +39,7 @@ multiple `k8s-worker` units [#221]. ## Upstream deprecations and API changes -For details of other deprecation notices and API changes for Kubernetes 1.32, +For details of other deprecation notices and API changes for Kubernetes 1.32, please see the relevant sections of the [upstream release notes][upstream-changelog-1.32]. @@ -83,7 +83,7 @@ Many thanks to [@addyess], [@mateoflorido], [@bschimke95], [@louiseschmidtgen], [charm config]: https://charmhub.io/k8s/configurations [upstream release]: https://kubernetes.io/blog/2024/12/11/kubernetes-v1-32-release/ -[snap release page]: /src/snap/reference/versions/1.32.md +[snap release page]: /snap/reference/versions/1.32.md [@asbalderson]: https://github.com/asbalderson diff --git a/docs/src/charm/tutorial/basic-operations.md b/docs/canonicalk8s/charm/tutorial/basic-operations.md similarity index 100% rename from docs/src/charm/tutorial/basic-operations.md rename to docs/canonicalk8s/charm/tutorial/basic-operations.md diff --git a/docs/src/charm/tutorial/getting-started.md b/docs/canonicalk8s/charm/tutorial/getting-started.md similarity index 100% rename from docs/src/charm/tutorial/getting-started.md rename to docs/canonicalk8s/charm/tutorial/getting-started.md diff --git a/docs/src/charm/tutorial/index.md b/docs/canonicalk8s/charm/tutorial/index.md similarity index 100% rename from docs/src/charm/tutorial/index.md rename to docs/canonicalk8s/charm/tutorial/index.md diff --git a/docs/canonicalk8s/community.md b/docs/canonicalk8s/community.md new file mode 100644 index 000000000..ef898b36e --- /dev/null +++ b/docs/canonicalk8s/community.md @@ -0,0 +1,2 @@ +```{include} /snap/reference/community.md +``` diff --git a/docs/canonicalk8s/conf-rtd.py b/docs/canonicalk8s/conf-rtd.py deleted file mode 100644 index 05d127f0d..000000000 --- a/docs/canonicalk8s/conf-rtd.py +++ /dev/null @@ -1,254 +0,0 @@ -import sys -import os -import requests -from urllib.parse import urlparse -from git import Repo, InvalidGitRepositoryError -import time -import ast -import yaml - -sys.path.append('./') -from custom_conf import * -sys.path.append('.sphinx/') -from build_requirements import * - -# Configuration file for the Sphinx documentation builder. -# You should not do any modifications to this file. Put your custom -# configuration into the custom_conf.py file. -# If you need to change this file, contribute the changes upstream. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -############################################################ -### Extensions -############################################################ - -extensions = [ - 'sphinx_design', - 'sphinx_copybutton', - 'sphinxcontrib.jquery', -] - -# Only add redirects extension if any redirects are specified. -if AreRedirectsDefined(): - extensions.append('sphinx_reredirects') - -# Only add myst extensions if any configuration is present. -if IsMyStParserUsed(): - extensions.append('myst_parser') - - # Additional MyST syntax - myst_enable_extensions = [ - 'substitution', - 'deflist', - 'linkify' - ] - myst_enable_extensions.extend(custom_myst_extensions) - -# Only add Open Graph extension if any configuration is present. -if IsOpenGraphConfigured(): - extensions.append('sphinxext.opengraph') - -extensions.extend(custom_extensions) -extensions = DeduplicateExtensions(extensions) - -### Configuration for extensions - -# Used for related links -if not 'discourse_prefix' in html_context and 'discourse' in html_context: - html_context['discourse_prefix'] = html_context['discourse'] + '/t/' - -# The URL prefix for the notfound extension depends on whether the documentation uses versions. -# For documentation on documentation.ubuntu.com, we also must add the slug. -url_version = '' -url_lang = '' - -# Determine if the URL uses versions and language -if 'READTHEDOCS_CANONICAL_URL' in os.environ and os.environ['READTHEDOCS_CANONICAL_URL']: - url_parts = os.environ['READTHEDOCS_CANONICAL_URL'].split('/') - - if len(url_parts) >= 2 and 'READTHEDOCS_VERSION' in os.environ and os.environ['READTHEDOCS_VERSION'] == url_parts[-2]: - url_version = url_parts[-2] + '/' - - if len(url_parts) >= 3 and 'READTHEDOCS_LANGUAGE' in os.environ and os.environ['READTHEDOCS_LANGUAGE'] == url_parts[-3]: - url_lang = url_parts[-3] + '/' - -# Set notfound_urls_prefix to the slug (if defined) and the version/language affix -if slug: - notfound_urls_prefix = '/' + slug + '/' + url_lang + url_version -elif len(url_lang + url_version) > 0: - notfound_urls_prefix = '/' + url_lang + url_version -else: - notfound_urls_prefix = '' - -notfound_context = { - 'title': 'Page not found', - 'body': '

Sorry, but the documentation page that you are looking for was not found.

\n\n

Documentation changes over time, and pages are moved around. We try to redirect you to the updated content where possible, but unfortunately, that didn\'t work this time (maybe because the content you were looking for does not exist in this version of the documentation).

\n

You can try to use the navigation to locate the content you\'re looking for, or search for a similar page.

\n', -} - -# Default image for OGP (to prevent font errors, see -# https://github.com/canonical/sphinx-docs-starter-pack/pull/54 ) -if not 'ogp_image' in locals(): - ogp_image = 'https://assets.ubuntu.com/v1/253da317-image-document-ubuntudocs.svg' - -############################################################ -### General configuration -############################################################ - -exclude_patterns = [ - '_build', - 'Thumbs.db', - '.DS_Store', - '.sphinx', -] -exclude_patterns.extend(custom_excludes) - -rst_epilog = ''' -.. include:: /reuse/links.txt -''' -if 'custom_rst_epilog' in locals(): - rst_epilog = custom_rst_epilog - -source_suffix = { - '.rst': 'restructuredtext', - '.md': 'markdown', -} - -if not 'conf_py_path' in html_context and 'github_folder' in html_context: - html_context['conf_py_path'] = html_context['github_folder'] - -# For ignoring specific links -linkcheck_anchors_ignore_for_url = [ - r'https://github\.com/.*' -] -linkcheck_anchors_ignore_for_url.extend(custom_linkcheck_anchors_ignore_for_url) - -# Tags cannot be added directly in custom_conf.py, so add them here -for tag in custom_tags: - tags.add(tag) - -# html_context['get_contribs'] is a function and cannot be -# cached (see https://github.com/sphinx-doc/sphinx/issues/12300) -suppress_warnings = ["config.cache"] - -############################################################ -### Styling -############################################################ - -# Find the current builder -builder = 'dirhtml' -if '-b' in sys.argv: - builder = sys.argv[sys.argv.index('-b')+1] - -# Setting templates_path for epub makes the build fail -if builder == 'dirhtml' or builder == 'html': - templates_path = ['.sphinx/_templates'] - notfound_template = '404.html' - -# Theme configuration -html_theme = 'furo' -html_last_updated_fmt = '' -html_permalinks_icon = '¶' - -if html_title == '': - html_theme_options = { - 'sidebar_hide_name': True - } - -############################################################ -### Additional files -############################################################ - -html_static_path = ['.sphinx/_static'] - -html_css_files = [ - 'custom.css', - 'header.css', - 'github_issue_links.css', - 'furo_colors.css', - 'footer.css' -] -html_css_files.extend(custom_html_css_files) - -html_js_files = ['header-nav.js', 'footer.js'] -if 'github_issues' in html_context and html_context['github_issues'] and not disable_feedback_button: - html_js_files.append('github_issue_links.js') -html_js_files.extend(custom_html_js_files) - -############################################################# -# Display the contributors - - -############################################################# -# DISABLED AS IT DOESN'T WORK FOR source not in same dir - -#def get_contributors_for_file(github_url, github_folder, github_source, pagename, page_source_suffix, display_contributors_since=None): -# filename = f"{pagename}{page_source_suffix}" -# paths=html_context['github_source'][1:] + filename -# -# try: -# repo = Repo(".") -# except InvalidGitRepositoryError: -# cwd = os.getcwd() -# ghfolder = html_context['github_source'][:-1] -# -# if ghfolder and cwd.endswith(ghfolder): -# repo = Repo(cwd.rpartition(ghfolder)[0]) -# else: -# print("The local Git repository could not be found.") -# return -# -# since = display_contributors_since if display_contributors_since and display_contributors_since.strip() else None -# -# commits = repo.iter_commits(paths=paths, since=since) -# -# contributors_dict = {} -# for commit in commits: -# contributor = commit.author.name -# if contributor not in contributors_dict or commit.committed_date > contributors_dict[contributor]['date']: -# contributors_dict[contributor] = { -# 'date': commit.committed_date, -# 'sha': commit.hexsha -# } -# # The github_page contains the link to the contributor's latest commit. -# contributors_list = [{'name': name, 'github_page': f"{github_url}/commit/{data['sha']}"} for name, data in contributors_dict.items()] -# sorted_contributors_list = sorted(contributors_list, key=lambda x: x['name']) -# return sorted_contributors_list -# -# html_context['get_contribs'] = get_contributors_for_file - -############################################################ -### Myst configuration -############################################################ -if os.path.exists('./reuse/substitutions.yaml'): - with open('./reuse/substitutions.yaml', 'r') as fd: - myst_substitutions = yaml.safe_load(fd.read()) - - -############################################################ -### PDF configuration -############################################################ - -latex_additional_files = [ - "./.sphinx/fonts/Ubuntu-B.ttf", - "./.sphinx/fonts/Ubuntu-R.ttf", - "./.sphinx/fonts/Ubuntu-RI.ttf", - "./.sphinx/fonts/UbuntuMono-R.ttf", - "./.sphinx/fonts/UbuntuMono-RI.ttf", - "./.sphinx/fonts/UbuntuMono-B.ttf", - "./.sphinx/images/Canonical-logo-4x.png", - "./.sphinx/images/front-page-light.pdf", - "./.sphinx/images/normal-page-footer.pdf", -] - -latex_engine = 'xelatex' -latex_show_pagerefs = True -latex_show_urls = 'footnote' - -with open(".sphinx/latex_elements_template.txt", "rt") as file: - latex_config = file.read() - -latex_elements = ast.literal_eval(latex_config.replace("$PROJECT", project)) - -master_doc = 'index' \ No newline at end of file diff --git a/docs/canonicalk8s/conf.py b/docs/canonicalk8s/conf.py index c804e78c1..5cc3cafeb 100644 --- a/docs/canonicalk8s/conf.py +++ b/docs/canonicalk8s/conf.py @@ -192,7 +192,7 @@ # except InvalidGitRepositoryError: # cwd = os.getcwd() # ghfolder = html_context['github_source'][:-1] -# +# # if ghfolder and cwd.endswith(ghfolder): # repo = Repo(cwd.rpartition(ghfolder)[0]) # else: @@ -252,4 +252,4 @@ latex_elements = ast.literal_eval(latex_config.replace("$PROJECT", project)) -master_doc = 'index' \ No newline at end of file +master_doc = 'index' diff --git a/docs/canonicalk8s/custom_conf.py b/docs/canonicalk8s/custom_conf.py index e0ff5a05d..3568d992d 100644 --- a/docs/canonicalk8s/custom_conf.py +++ b/docs/canonicalk8s/custom_conf.py @@ -99,7 +99,7 @@ # Change to the folder that contains the documentation # (usually "/" or "/docs/") - 'github_folder': '/docs/', + 'github_folder': '/docs/canonicalk8s/', # Change to an empty value if your GitHub repo doesn't have issues enabled. # This will disable the feedback button and the issue link in the footer. @@ -143,7 +143,9 @@ 'http://127.0.0.1:8000', 'http://rocks.canonical.com', 'about', - 'https://ceph.io/' + 'https://ceph.io/', + 'https://charmhub.io/k8s/', + 'https://charmhub.io/k8s-worker/' ] # Pages on which to ignore anchors @@ -160,6 +162,8 @@ # Remove this variable to disable the MyST parser extensions. custom_myst_extensions = [] +suppress_warnings = ["myst.xref_missing", "myst.iref_ambiguous"] + # Add custom Sphinx extensions as needed. # This array contains recommended extensions that should be used. # NOTE: The following extensions are handled automatically and do @@ -190,7 +194,7 @@ custom_excludes = [ 'doc-cheat-sheet*', '_parts/*', - 'src/_parts' + '/_parts' ] # Add CSS files (located in .sphinx/_static/) @@ -243,5 +247,7 @@ 'https://ubuntu.com/about/release-cycle', 'https://juju.is/docs/juju/relation', 'https://canonical.com/multipass/docs/tutorial', - 'https://microk8s.io/docs/how-to-cis-harden' + 'https://microk8s.io/docs/how-to-cis-harden', + 'https://registry.terraform.io/providers/juju/juju/latest/docs', + 'https://snapcraft.io/docs/managing-updates' ] diff --git a/docs/canonicalk8s/index.md b/docs/canonicalk8s/index.md index 6b9ba94b1..de5806a87 100644 --- a/docs/canonicalk8s/index.md +++ b/docs/canonicalk8s/index.md @@ -17,7 +17,7 @@ development and innovation without having to worry about the infrastructure. Whether you are deploying a small cluster to get accustomed to Kubernetes or a huge enterprise level deployment across the globe, {{product}} can cater to your needs. If you would like to jump straight in, head to the -[snap getting started tutorial!](src/snap/tutorial/getting-started.md) +[snap getting started tutorial!](/snap/tutorial/getting-started.md) ![Illustration depicting working on components and clouds][logo] @@ -29,7 +29,7 @@ your needs. If you would like to jump straight in, head to the Juju cluster or with Cluster API. Find out more about which {{product}} installation method is best for your project's needs with -**[choosing a {{product}} installation method.](src/snap/explanation/installation-methods.md)** +**[choosing a {{product}} installation method.](/snap/explanation/installation-methods.md)** ```{toctree} @@ -45,37 +45,36 @@ Canonical Kubernetes documentation :titlesonly: :maxdepth: 6 -src/about.md -Deploy from Snap package -Deploy with Juju -Deploy with Cluster API -Community -Release notes +about.md +Deploy from Snap package +Deploy with Juju +Deploy with Cluster API +Community +Release notes ``` ````{grid} 1 1 1 1 ```{grid-item-card} -:link: src/snap/ -### [Install with a snap ›](src/snap/index) +:link: snap/ +### [Install with a snap ›](/snap/index) Our tutorials, how-to guides and other pages will explain how to install, configure and use the {{product}} 'k8s' snap. If you are new to Kubernetes, start here. ``` ```{grid-item-card} -:link: src/charm/ -### [Deploy with Juju ›](src/charm/index) +:link: charm/ +### [Deploy with Juju ›](/charm/index) Our tutorials, how-to guides and other pages will explain how to install, configure and use the {{product}} 'k8s' charm. ``` - ```{grid-item-card} -:link: src/capi/ -### [Deploy with Cluster API ›](src/capi/index) +:link: capi/ +### [Deploy with Cluster API ›](/capi/index) Our tutorials, how-to guides and other pages will explain how to install, configure and use {{product}} through CAPI. @@ -103,6 +102,6 @@ and constructive feedback. [Code of Conduct]: https://ubuntu.com/community/ethos/code-of-conduct -[community]: src/snap/reference/community -[contribute]: src/snap/howto/contribute -[releases]: src/snap/reference/releases +[community]: /snap/reference/community +[contribute]: /snap/howto/contribute +[releases]: /snap/reference/releases diff --git a/docs/src/releases.md b/docs/canonicalk8s/releases.md similarity index 83% rename from docs/src/releases.md rename to docs/canonicalk8s/releases.md index 343927e89..0157c40f3 100644 --- a/docs/src/releases.md +++ b/docs/canonicalk8s/releases.md @@ -10,8 +10,8 @@ and backwards-incompatible changes. ```{toctree} :titlesonly: :maxdepth: 2 -Snap release notes -Charm release notes +Snap release notes +Charm release notes ``` diff --git a/docs/src/snap/explanation/about.md b/docs/canonicalk8s/snap/explanation/about.md similarity index 94% rename from docs/src/snap/explanation/about.md rename to docs/canonicalk8s/snap/explanation/about.md index b32d051c9..e3245dec2 100644 --- a/docs/src/snap/explanation/about.md +++ b/docs/canonicalk8s/snap/explanation/about.md @@ -59,11 +59,11 @@ visit the [Ubuntu support] page. [Kubernetes]: https://kubernetes.io [snap]: https://snapcraft.io/docs -[tutorial]: /src/snap/tutorial/getting-started.md +[tutorial]: /snap/tutorial/getting-started.md [Juju]: https://juju.is [charm]: https://charmhub.io/k8s [snapd documentation]: https://snapcraft.io/docs/installing-snapd [Community page]: community.md [Ubuntu Pro]: https://ubuntu.com/pro [Ubuntu support]: https://ubuntu.com/support -[choosing an installation method]: /src/snap/explanation/installation-methods.md +[choosing an installation method]: /snap/explanation/installation-methods.md diff --git a/docs/src/snap/explanation/certificates.md b/docs/canonicalk8s/snap/explanation/certificates.md similarity index 98% rename from docs/src/snap/explanation/certificates.md rename to docs/canonicalk8s/snap/explanation/certificates.md index f2d47f440..a0befae4c 100644 --- a/docs/src/snap/explanation/certificates.md +++ b/docs/canonicalk8s/snap/explanation/certificates.md @@ -54,7 +54,8 @@ requirements. ## Performing certificate refreshes -If you would like to refresh the certificates of your {{product}} cluster see our [how-to guide]. +If you would like to refresh the certificates of your {{product}} cluster see +our [how-to guide]. diff --git a/docs/src/snap/explanation/channels.md b/docs/canonicalk8s/snap/explanation/channels.md similarity index 100% rename from docs/src/snap/explanation/channels.md rename to docs/canonicalk8s/snap/explanation/channels.md diff --git a/docs/src/snap/explanation/cis.md b/docs/canonicalk8s/snap/explanation/cis.md similarity index 100% rename from docs/src/snap/explanation/cis.md rename to docs/canonicalk8s/snap/explanation/cis.md diff --git a/docs/src/snap/explanation/clustering.md b/docs/canonicalk8s/snap/explanation/clustering.md similarity index 100% rename from docs/src/snap/explanation/clustering.md rename to docs/canonicalk8s/snap/explanation/clustering.md diff --git a/docs/src/snap/explanation/epa.md b/docs/canonicalk8s/snap/explanation/epa.md similarity index 100% rename from docs/src/snap/explanation/epa.md rename to docs/canonicalk8s/snap/explanation/epa.md diff --git a/docs/src/snap/explanation/high-availability.md b/docs/canonicalk8s/snap/explanation/high-availability.md similarity index 100% rename from docs/src/snap/explanation/high-availability.md rename to docs/canonicalk8s/snap/explanation/high-availability.md diff --git a/docs/src/snap/explanation/index.md b/docs/canonicalk8s/snap/explanation/index.md similarity index 100% rename from docs/src/snap/explanation/index.md rename to docs/canonicalk8s/snap/explanation/index.md diff --git a/docs/src/snap/explanation/ingress.md b/docs/canonicalk8s/snap/explanation/ingress.md similarity index 94% rename from docs/src/snap/explanation/ingress.md rename to docs/canonicalk8s/snap/explanation/ingress.md index 8852887a4..d3af42c9c 100644 --- a/docs/src/snap/explanation/ingress.md +++ b/docs/canonicalk8s/snap/explanation/ingress.md @@ -52,7 +52,7 @@ the cluster. Ingress does not work without an Ingress Controller. The Ingress Controller also serves as a layer 7 (HTTP/HTTPS) load balancer that routes traffic from outside of your cluster to services -inside of your cluster. Please do not confuse this with the +inside of your cluster. Please do not confuse this with the Kubernetes Service LoadBalancer type which operates at layer 4 and routes traffic directly to individual pods. @@ -80,9 +80,9 @@ outlining rules that direct traffic to your application's Kubernetes service. -[alternative-cni]: ../../snap/howto/networking/alternative-cni -[Ingress]: ../../snap/howto/networking/default-ingress -[Network]: ../../snap/howto/networking/default-network +[alternative-cni]: /snap/howto/networking/alternative-cni +[Ingress]: /snap/howto/networking/default-ingress +[Network]: /snap/howto/networking/default-network [LoadBalancer]: load-balancer [Cilium]: https://cilium.io/ [network plugin]: https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/ diff --git a/docs/src/snap/explanation/installation-methods.md b/docs/canonicalk8s/snap/explanation/installation-methods.md similarity index 92% rename from docs/src/snap/explanation/installation-methods.md rename to docs/canonicalk8s/snap/explanation/installation-methods.md index b68bf156e..4f5819f7e 100644 --- a/docs/src/snap/explanation/installation-methods.md +++ b/docs/canonicalk8s/snap/explanation/installation-methods.md @@ -58,11 +58,11 @@ the help of the CAPI providers. [Multipass]: https://canonical.com/multipass [LXD]: https://canonical.com/lxd [Juju]: https://juju.is -[juju-cli guide]: /src/charm/tutorial/getting-started.md +[juju-cli guide]: /charm/tutorial/getting-started.md [control plane charm]: https://charmhub.io/k8s [worker charm]: https://charmhub.io/k8s-worker -[getting-started guide]: /src/snap/tutorial/getting-started.md +[getting-started guide]: /snap/tutorial/getting-started.md [Terraform's Juju provider]: https://github.com/juju/terraform-provider-juju/ -[installing-with-terraform]: /src/charm/howto/install/install-terraform -[CAPI guide]: /src/capi/tutorial/getting-started.md +[installing-with-terraform]: /charm/howto/install/install-terraform +[CAPI guide]: /capi/tutorial/getting-started.md [Cluster API]: https://cluster-api.sigs.k8s.io/ diff --git a/docs/src/snap/explanation/load-balancer.md b/docs/canonicalk8s/snap/explanation/load-balancer.md similarity index 100% rename from docs/src/snap/explanation/load-balancer.md rename to docs/canonicalk8s/snap/explanation/load-balancer.md diff --git a/docs/src/snap/explanation/package-management.md b/docs/canonicalk8s/snap/explanation/package-management.md similarity index 100% rename from docs/src/snap/explanation/package-management.md rename to docs/canonicalk8s/snap/explanation/package-management.md diff --git a/docs/src/snap/explanation/security.md b/docs/canonicalk8s/snap/explanation/security.md similarity index 96% rename from docs/src/snap/explanation/security.md rename to docs/canonicalk8s/snap/explanation/security.md index ac7048377..3350fd17c 100644 --- a/docs/src/snap/explanation/security.md +++ b/docs/canonicalk8s/snap/explanation/security.md @@ -61,7 +61,7 @@ check the [roadmap][] for current areas of work. [Kubernetes Security documentation]: https://kubernetes.io/docs/concepts/security/overview/ [snap documentation]: https://snapcraft.io/docs/security-policies -[rocks-security]: https://canonical-rockcraft.readthedocs-hosted.com/en/latest/explanation/rockcraft/ +[rocks-security]: https://documentation.ubuntu.com/rockcraft/en/latest/explanation/rockcraft.html [roadmap]: ../reference/roadmap [Amazon Web Services security]: https://aws.amazon.com/security/ [Google Cloud Platform security]:https://cloud.google.com/security diff --git a/docs/src/snap/explanation/upgrade.md b/docs/canonicalk8s/snap/explanation/upgrade.md similarity index 98% rename from docs/src/snap/explanation/upgrade.md rename to docs/canonicalk8s/snap/explanation/upgrade.md index 4dcdb2f4b..d917ff2b0 100644 --- a/docs/src/snap/explanation/upgrade.md +++ b/docs/canonicalk8s/snap/explanation/upgrade.md @@ -119,5 +119,5 @@ to completion before upgrading the next node. [explanation page]: channels.md [high availability explanation page]: high-availability.md [targeted snap refresh]:https://snapcraft.io/docs/managing-updates#p-32248-if-snaps-are-specified -[release notes]: /src/releases -[backing up cluster data]: /src/snap/howto/backup-restore.md +[release notes]: releases +[backing up cluster data]: /snap/howto/backup-restore.md diff --git a/docs/src/snap/howto/backup-restore.md b/docs/canonicalk8s/snap/howto/backup-restore.md similarity index 100% rename from docs/src/snap/howto/backup-restore.md rename to docs/canonicalk8s/snap/howto/backup-restore.md diff --git a/docs/src/snap/howto/contribute.md b/docs/canonicalk8s/snap/howto/contribute.md similarity index 95% rename from docs/src/snap/howto/contribute.md rename to docs/canonicalk8s/snap/howto/contribute.md index e61272b39..7bca6bfc2 100644 --- a/docs/src/snap/howto/contribute.md +++ b/docs/canonicalk8s/snap/howto/contribute.md @@ -203,10 +203,10 @@ press `F5` in your browser to reload the page without caching)! [Snapcraft documentation]: https://snapcraft.io/docs/snapcraft-setup [code repo]: https://github.com/canonical/k8s-snap [Diátaxis website]: https://diataxis.fr/ -[_parts]: https://github.com/canonical/k8s-snap/blob/main/docs/src/_parts/doc-cheat-sheet-myst.md +[_parts]: https://github.com/canonical/k8s-snap/blob/main/docs/canonicalk8s/_parts/doc-cheat-sheet-myst.md [community page]: ../reference/community -[Tutorial template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/_parts/template-tutorial -[How to template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/_parts/template-howto -[Explanation template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/_parts/template-explanation -[Reference template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/_parts/template-reference -[development env guide]: ./install/dev-env.md +[Tutorial template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/_parts/template-tutorial +[How to template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/_parts/template-howto +[Explanation template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/_parts/template-explanation +[Reference template]: https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/_parts/template-reference +[development env guide]: install/dev-env.md diff --git a/docs/src/snap/howto/epa.md b/docs/canonicalk8s/snap/howto/epa.md similarity index 99% rename from docs/src/snap/howto/epa.md rename to docs/canonicalk8s/snap/howto/epa.md index 7da71528a..1865e9ac5 100644 --- a/docs/src/snap/howto/epa.md +++ b/docs/canonicalk8s/snap/howto/epa.md @@ -285,9 +285,9 @@ With these preparation steps we have enabled the features of EPA: ````{group-tab} MAAS To prepare a machine for CPU isolation, HugePages, real-time kernel, -SR-IOV and DPDK we leverage cloud-init through MAAS available to download {download}`here `. +SR-IOV and DPDK we leverage cloud-init through MAAS available to download {download}`here `. -```{literalinclude} /src/assets/how-to-epa-maas-cloud-init +```{literalinclude} /assets/how-to-epa-maas-cloud-init ``` ```{note} @@ -330,11 +330,11 @@ EPA capabilities. ``` 2. Create a file called *configuration.yaml* or download it -{download}`here `. In this configuration file +{download}`here `. In this configuration file we let the snap start with its default CNI (calico), with CoreDNS deployed and we also point k8s to the external etcd. -```{literalinclude} /src/assets/configuration.yaml +```{literalinclude} /assets/configuration.yaml :language: yaml ``` diff --git a/docs/src/snap/howto/external-datastore.md b/docs/canonicalk8s/snap/howto/external-datastore.md similarity index 100% rename from docs/src/snap/howto/external-datastore.md rename to docs/canonicalk8s/snap/howto/external-datastore.md diff --git a/docs/src/snap/howto/image-management.md b/docs/canonicalk8s/snap/howto/image-management.md similarity index 100% rename from docs/src/snap/howto/image-management.md rename to docs/canonicalk8s/snap/howto/image-management.md diff --git a/docs/src/snap/howto/index.md b/docs/canonicalk8s/snap/howto/index.md similarity index 100% rename from docs/src/snap/howto/index.md rename to docs/canonicalk8s/snap/howto/index.md diff --git a/docs/src/snap/howto/install/custom-bootstrap-config.md b/docs/canonicalk8s/snap/howto/install/custom-bootstrap-config.md similarity index 94% rename from docs/src/snap/howto/install/custom-bootstrap-config.md rename to docs/canonicalk8s/snap/howto/install/custom-bootstrap-config.md index 2b7c07266..f3ae0ad09 100644 --- a/docs/src/snap/howto/install/custom-bootstrap-config.md +++ b/docs/canonicalk8s/snap/howto/install/custom-bootstrap-config.md @@ -1,4 +1,4 @@ -# How to install {{product}} with a custom bootstrap configuration +# How to install with a custom bootstrap configuration When creating a {{ product }} cluster that differs from the default configuration you can choose to use a custom bootstrap configuration. @@ -80,4 +80,4 @@ sudo k8s status -[reference page]: /src/snap/reference/bootstrap-config-reference.md +[reference page]: /snap/reference/bootstrap-config-reference.md diff --git a/docs/src/snap/howto/install/dev-env.md b/docs/canonicalk8s/snap/howto/install/dev-env.md similarity index 100% rename from docs/src/snap/howto/install/dev-env.md rename to docs/canonicalk8s/snap/howto/install/dev-env.md diff --git a/docs/src/snap/howto/install/index.md b/docs/canonicalk8s/snap/howto/install/index.md similarity index 90% rename from docs/src/snap/howto/install/index.md rename to docs/canonicalk8s/snap/howto/install/index.md index 7ea5eff64..e0a0b39df 100644 --- a/docs/src/snap/howto/install/index.md +++ b/docs/canonicalk8s/snap/howto/install/index.md @@ -17,5 +17,6 @@ the current How-to guides below. ... with Multipass ... in LXD ... in air-gapped environments +... in development environments Uninstall the snap ``` diff --git a/docs/src/snap/howto/install/lxd.md b/docs/canonicalk8s/snap/howto/install/lxd.md similarity index 100% rename from docs/src/snap/howto/install/lxd.md rename to docs/canonicalk8s/snap/howto/install/lxd.md diff --git a/docs/src/snap/howto/install/multipass.md b/docs/canonicalk8s/snap/howto/install/multipass.md similarity index 100% rename from docs/src/snap/howto/install/multipass.md rename to docs/canonicalk8s/snap/howto/install/multipass.md diff --git a/docs/src/snap/howto/install/offline.md b/docs/canonicalk8s/snap/howto/install/offline.md similarity index 100% rename from docs/src/snap/howto/install/offline.md rename to docs/canonicalk8s/snap/howto/install/offline.md diff --git a/docs/src/snap/howto/install/snap.md b/docs/canonicalk8s/snap/howto/install/snap.md similarity index 100% rename from docs/src/snap/howto/install/snap.md rename to docs/canonicalk8s/snap/howto/install/snap.md diff --git a/docs/src/snap/howto/install/uninstall.md b/docs/canonicalk8s/snap/howto/install/uninstall.md similarity index 100% rename from docs/src/snap/howto/install/uninstall.md rename to docs/canonicalk8s/snap/howto/install/uninstall.md diff --git a/docs/src/snap/howto/networking/alternative-cni.md b/docs/canonicalk8s/snap/howto/networking/alternative-cni.md similarity index 100% rename from docs/src/snap/howto/networking/alternative-cni.md rename to docs/canonicalk8s/snap/howto/networking/alternative-cni.md diff --git a/docs/src/snap/howto/networking/default-dns.md b/docs/canonicalk8s/snap/howto/networking/default-dns.md similarity index 100% rename from docs/src/snap/howto/networking/default-dns.md rename to docs/canonicalk8s/snap/howto/networking/default-dns.md diff --git a/docs/src/snap/howto/networking/default-gateway.md b/docs/canonicalk8s/snap/howto/networking/default-gateway.md similarity index 100% rename from docs/src/snap/howto/networking/default-gateway.md rename to docs/canonicalk8s/snap/howto/networking/default-gateway.md diff --git a/docs/src/snap/howto/networking/default-ingress.md b/docs/canonicalk8s/snap/howto/networking/default-ingress.md similarity index 100% rename from docs/src/snap/howto/networking/default-ingress.md rename to docs/canonicalk8s/snap/howto/networking/default-ingress.md diff --git a/docs/src/snap/howto/networking/default-loadbalancer.md b/docs/canonicalk8s/snap/howto/networking/default-loadbalancer.md similarity index 100% rename from docs/src/snap/howto/networking/default-loadbalancer.md rename to docs/canonicalk8s/snap/howto/networking/default-loadbalancer.md diff --git a/docs/src/snap/howto/networking/default-network.md b/docs/canonicalk8s/snap/howto/networking/default-network.md similarity index 100% rename from docs/src/snap/howto/networking/default-network.md rename to docs/canonicalk8s/snap/howto/networking/default-network.md diff --git a/docs/src/snap/howto/networking/dualstack.md b/docs/canonicalk8s/snap/howto/networking/dualstack.md similarity index 97% rename from docs/src/snap/howto/networking/dualstack.md rename to docs/canonicalk8s/snap/howto/networking/dualstack.md index 5e3269286..675b2642f 100644 --- a/docs/src/snap/howto/networking/dualstack.md +++ b/docs/canonicalk8s/snap/howto/networking/dualstack.md @@ -66,7 +66,7 @@ cluster bootstrap process. The key configuration parameters are: It also creates an nginx deployment sample workload. ``` - sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/assets/how-to-dualstack-manifest.yaml + sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/assets/how-to-dualstack-manifest.yaml ``` 1. **Check IPv6 connectivity** diff --git a/docs/src/snap/howto/networking/index.md b/docs/canonicalk8s/snap/howto/networking/index.md similarity index 100% rename from docs/src/snap/howto/networking/index.md rename to docs/canonicalk8s/snap/howto/networking/index.md diff --git a/docs/src/snap/howto/networking/ipv6.md b/docs/canonicalk8s/snap/howto/networking/ipv6.md similarity index 97% rename from docs/src/snap/howto/networking/ipv6.md rename to docs/canonicalk8s/snap/howto/networking/ipv6.md index b6d74ceb9..4b52d8c36 100644 --- a/docs/src/snap/howto/networking/ipv6.md +++ b/docs/canonicalk8s/snap/howto/networking/ipv6.md @@ -75,7 +75,7 @@ Deploy a pod with an nginx web-server and expose it via a service to verify connectivity of the IPv6-only cluster: ```sh -sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/assets/how-to-ipv6-only-manifest.yaml +sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/assets/how-to-ipv6-only-manifest.yaml ``` 3. **Verify IPv6 connectivity** diff --git a/docs/src/snap/howto/networking/proxy.md b/docs/canonicalk8s/snap/howto/networking/proxy.md similarity index 100% rename from docs/src/snap/howto/networking/proxy.md rename to docs/canonicalk8s/snap/howto/networking/proxy.md diff --git a/docs/src/snap/howto/observability.md b/docs/canonicalk8s/snap/howto/observability.md similarity index 100% rename from docs/src/snap/howto/observability.md rename to docs/canonicalk8s/snap/howto/observability.md diff --git a/docs/src/snap/howto/refresh-certs.md b/docs/canonicalk8s/snap/howto/refresh-certs.md similarity index 100% rename from docs/src/snap/howto/refresh-certs.md rename to docs/canonicalk8s/snap/howto/refresh-certs.md diff --git a/docs/src/snap/howto/restore-quorum.md b/docs/canonicalk8s/snap/howto/restore-quorum.md similarity index 100% rename from docs/src/snap/howto/restore-quorum.md rename to docs/canonicalk8s/snap/howto/restore-quorum.md diff --git a/docs/src/snap/howto/security/cis-assessment.md b/docs/canonicalk8s/snap/howto/security/cis-assessment.md similarity index 99% rename from docs/src/snap/howto/security/cis-assessment.md rename to docs/canonicalk8s/snap/howto/security/cis-assessment.md index 9ae535baa..8445faf6a 100644 --- a/docs/src/snap/howto/security/cis-assessment.md +++ b/docs/canonicalk8s/snap/howto/security/cis-assessment.md @@ -29,7 +29,7 @@ This guide assumes the following: By completing these steps, you can ensure your cluster achieves does not fail any of the CIS hardening recommendations. -```{include} ../../../_parts/common_hardening.md +```{include} /_parts/common_hardening.md ``` ## Assess CIS hardening with kube-bench diff --git a/docs/src/snap/howto/security/disa-stig-assessment.md b/docs/canonicalk8s/snap/howto/security/disa-stig-assessment.md similarity index 100% rename from docs/src/snap/howto/security/disa-stig-assessment.md rename to docs/canonicalk8s/snap/howto/security/disa-stig-assessment.md diff --git a/docs/src/snap/howto/security/hardening.md b/docs/canonicalk8s/snap/howto/security/hardening.md similarity index 96% rename from docs/src/snap/howto/security/hardening.md rename to docs/canonicalk8s/snap/howto/security/hardening.md index 27950ea0f..8a475cb95 100644 --- a/docs/src/snap/howto/security/hardening.md +++ b/docs/canonicalk8s/snap/howto/security/hardening.md @@ -20,7 +20,7 @@ Please evaluate the implications of each configuration before applying it. These steps are common to the hardening process for both CIS and DISA STIG compliance. -```{include} ../../../_parts/common_hardening.md +```{include} /_parts/common_hardening.md ``` diff --git a/docs/src/snap/howto/security/index.md b/docs/canonicalk8s/snap/howto/security/index.md similarity index 100% rename from docs/src/snap/howto/security/index.md rename to docs/canonicalk8s/snap/howto/security/index.md diff --git a/docs/src/snap/howto/storage/ceph.md b/docs/canonicalk8s/snap/howto/storage/ceph.md similarity index 100% rename from docs/src/snap/howto/storage/ceph.md rename to docs/canonicalk8s/snap/howto/storage/ceph.md diff --git a/docs/src/snap/howto/storage/cloud.md b/docs/canonicalk8s/snap/howto/storage/cloud.md similarity index 99% rename from docs/src/snap/howto/storage/cloud.md rename to docs/canonicalk8s/snap/howto/storage/cloud.md index 756ef5e85..a7c602445 100644 --- a/docs/src/snap/howto/storage/cloud.md +++ b/docs/canonicalk8s/snap/howto/storage/cloud.md @@ -369,7 +369,7 @@ subjects: You can apply the CCM manifest easily by running the following command: ```bash -sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/assets/how-to-cloud-storage-aws-ccm.yaml +sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/assets/how-to-cloud-storage-aws-ccm.yaml ``` After a moment, you should see the cloud controller manager pod was diff --git a/docs/src/snap/howto/storage/index.md b/docs/canonicalk8s/snap/howto/storage/index.md similarity index 100% rename from docs/src/snap/howto/storage/index.md rename to docs/canonicalk8s/snap/howto/storage/index.md diff --git a/docs/src/snap/howto/storage/storage.md b/docs/canonicalk8s/snap/howto/storage/storage.md similarity index 100% rename from docs/src/snap/howto/storage/storage.md rename to docs/canonicalk8s/snap/howto/storage/storage.md diff --git a/docs/src/snap/howto/support.md b/docs/canonicalk8s/snap/howto/support.md similarity index 100% rename from docs/src/snap/howto/support.md rename to docs/canonicalk8s/snap/howto/support.md diff --git a/docs/src/snap/howto/troubleshooting.md b/docs/canonicalk8s/snap/howto/troubleshooting.md similarity index 100% rename from docs/src/snap/howto/troubleshooting.md rename to docs/canonicalk8s/snap/howto/troubleshooting.md diff --git a/docs/src/snap/howto/upgrades.md b/docs/canonicalk8s/snap/howto/upgrades.md similarity index 100% rename from docs/src/snap/howto/upgrades.md rename to docs/canonicalk8s/snap/howto/upgrades.md diff --git a/docs/src/snap/index.md b/docs/canonicalk8s/snap/index.md similarity index 96% rename from docs/src/snap/index.md rename to docs/canonicalk8s/snap/index.md index ab62d9133..3c24c3045 100644 --- a/docs/src/snap/index.md +++ b/docs/canonicalk8s/snap/index.md @@ -22,7 +22,7 @@ create and manage a scalable cluster suitable for all use cases. You can find out more about {{product}} on this [overview page] or see a more detailed explanation in our [architecture documentation]. -For deployment at scale, {{product}} is also available as a +For deployment at scale, {{product}} is also available as a [Juju charm][] ![Illustration depicting working on components and clouds][logo] diff --git a/docs/src/snap/reference/annotations.md b/docs/canonicalk8s/snap/reference/annotations.md similarity index 100% rename from docs/src/snap/reference/annotations.md rename to docs/canonicalk8s/snap/reference/annotations.md diff --git a/docs/src/snap/reference/architecture.md b/docs/canonicalk8s/snap/reference/architecture.md similarity index 100% rename from docs/src/snap/reference/architecture.md rename to docs/canonicalk8s/snap/reference/architecture.md diff --git a/docs/src/snap/reference/certificates.md b/docs/canonicalk8s/snap/reference/certificates.md similarity index 100% rename from docs/src/snap/reference/certificates.md rename to docs/canonicalk8s/snap/reference/certificates.md diff --git a/docs/canonicalk8s/snap/reference/commands.md b/docs/canonicalk8s/snap/reference/commands.md new file mode 100644 index 000000000..31816517a --- /dev/null +++ b/docs/canonicalk8s/snap/reference/commands.md @@ -0,0 +1,59 @@ +# Commands + +These are the commands provided by the k8s snap: + +```{include} /_parts/commands/k8s.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_bootstrap.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_config.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_disable.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_enable.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_get-join-token.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_get.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_join-cluster.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_kubectl.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_remove-node.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_set.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_status.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_refresh-certs.md + :end-before: '### SEE ALSO' +``` + +```{include} /_parts/commands/k8s_completion.md + :end-before: '### SEE ALSO' +``` diff --git a/docs/src/snap/reference/community.md b/docs/canonicalk8s/snap/reference/community.md similarity index 96% rename from docs/src/snap/reference/community.md rename to docs/canonicalk8s/snap/reference/community.md index 53474fb0a..9dddf86de 100644 --- a/docs/src/snap/reference/community.md +++ b/docs/canonicalk8s/snap/reference/community.md @@ -66,6 +66,6 @@ the guidelines for participation. [slack]: http://slack.kubernetes.io/ [Discourse]: https://discourse.ubuntu.com/c/kubernetes/180 [bugs]: https://github.com/canonical/k8s-snap/issues -[Contributing guide]: /src/snap/howto/contribute.md -[Developer guide]: /src/snap/howto/contribute.md +[Contributing guide]: /snap/howto/contribute.md +[Developer guide]: /snap/howto/contribute.md [support]: https://ubuntu.com/support diff --git a/docs/src/snap/reference/config-files/bootstrap-config.md b/docs/canonicalk8s/snap/reference/config-files/bootstrap-config.md similarity index 75% rename from docs/src/snap/reference/config-files/bootstrap-config.md rename to docs/canonicalk8s/snap/reference/config-files/bootstrap-config.md index 03c22c571..1809790a1 100644 --- a/docs/src/snap/reference/config-files/bootstrap-config.md +++ b/docs/canonicalk8s/snap/reference/config-files/bootstrap-config.md @@ -6,7 +6,7 @@ by listing all available options and their details. See below for an example. ## Configuration options -```{include} /src/_parts/bootstrap_config.md +```{include} /_parts/bootstrap_config.md ``` @@ -16,11 +16,11 @@ The following example configures and enables certain features, sets an external cloud provider, marks the control plane nodes as unschedulable, changes the pod and service CIDRs from the defaults and adds an extra SAN to the generated certificates. It is also available to download {download}`here -`. +`. -```{literalinclude} /src/assets/example-bootstrap-config.yaml +```{literalinclude} /assets/example-bootstrap-config.yaml :language: yaml ``` -[example-config]: /src/assets/example-bootstrap-config.yaml +[example-config]: /assets/example-bootstrap-config.yaml diff --git a/docs/src/snap/reference/config-files/control-plane-join-config.md b/docs/canonicalk8s/snap/reference/config-files/control-plane-join-config.md similarity index 79% rename from docs/src/snap/reference/config-files/control-plane-join-config.md rename to docs/canonicalk8s/snap/reference/config-files/control-plane-join-config.md index 58737e41e..865ab4137 100755 --- a/docs/src/snap/reference/config-files/control-plane-join-config.md +++ b/docs/canonicalk8s/snap/reference/config-files/control-plane-join-config.md @@ -7,5 +7,5 @@ This reference section provides all available options for control plane nodes. ## Configuration options -```{include} /src/_parts/control_plane_join_config.md +```{include} /_parts/control_plane_join_config.md ``` diff --git a/docs/src/snap/reference/config-files/index.md b/docs/canonicalk8s/snap/reference/config-files/index.md similarity index 100% rename from docs/src/snap/reference/config-files/index.md rename to docs/canonicalk8s/snap/reference/config-files/index.md diff --git a/docs/src/snap/reference/config-files/worker-join-config.md b/docs/canonicalk8s/snap/reference/config-files/worker-join-config.md similarity index 81% rename from docs/src/snap/reference/config-files/worker-join-config.md rename to docs/canonicalk8s/snap/reference/config-files/worker-join-config.md index 20d6ab4a0..385f1195d 100755 --- a/docs/src/snap/reference/config-files/worker-join-config.md +++ b/docs/canonicalk8s/snap/reference/config-files/worker-join-config.md @@ -7,5 +7,5 @@ This reference section provides all available options for worker nodes. ## Configuration options -```{include} /src/_parts/worker_join_config.md +```{include} /_parts/worker_join_config.md ``` diff --git a/docs/src/snap/reference/dqlite.md b/docs/canonicalk8s/snap/reference/dqlite.md similarity index 100% rename from docs/src/snap/reference/dqlite.md rename to docs/canonicalk8s/snap/reference/dqlite.md diff --git a/docs/src/snap/reference/index.md b/docs/canonicalk8s/snap/reference/index.md similarity index 100% rename from docs/src/snap/reference/index.md rename to docs/canonicalk8s/snap/reference/index.md diff --git a/docs/src/snap/reference/ports-and-services.md b/docs/canonicalk8s/snap/reference/ports-and-services.md similarity index 100% rename from docs/src/snap/reference/ports-and-services.md rename to docs/canonicalk8s/snap/reference/ports-and-services.md diff --git a/docs/src/snap/reference/proxy.md b/docs/canonicalk8s/snap/reference/proxy.md similarity index 94% rename from docs/src/snap/reference/proxy.md rename to docs/canonicalk8s/snap/reference/proxy.md index 0ed60999a..96501448b 100644 --- a/docs/src/snap/reference/proxy.md +++ b/docs/canonicalk8s/snap/reference/proxy.md @@ -38,5 +38,4 @@ how to set these. [How to guide for configuring proxies for the k8s snap]: ../howto/networking/proxy -[How to guide for configuring proxies for k8s charms]: ../../charm/howto/proxy - +[How to guide for configuring proxies for k8s charms]: /charm/howto/proxy diff --git a/docs/src/snap/reference/releases.md b/docs/canonicalk8s/snap/reference/releases.md similarity index 86% rename from docs/src/snap/reference/releases.md rename to docs/canonicalk8s/snap/reference/releases.md index 4acde708b..9cfe8efe1 100644 --- a/docs/src/snap/reference/releases.md +++ b/docs/canonicalk8s/snap/reference/releases.md @@ -10,14 +10,14 @@ and backwards-incompatible changes. ```{toctree} :titlesonly: :maxdepth: 2 -/src/snap/reference/versions/1.31 -/src/snap/reference/versions/1.32 +/snap/reference/versions/1.31 +/snap/reference/versions/1.32 ``` ## Release policy and schedule -Our release cadence and support window for all Kubernetes-related products are +Our release cadence and support window for all Kubernetes-related products are available on the main Ubuntu website, on the [release cycle page][]. diff --git a/docs/src/snap/reference/troubleshooting.md b/docs/canonicalk8s/snap/reference/troubleshooting.md similarity index 100% rename from docs/src/snap/reference/troubleshooting.md rename to docs/canonicalk8s/snap/reference/troubleshooting.md diff --git a/docs/src/snap/reference/versions/1.31.md b/docs/canonicalk8s/snap/reference/versions/1.31.md similarity index 98% rename from docs/src/snap/reference/versions/1.31.md rename to docs/canonicalk8s/snap/reference/versions/1.31.md index 86c0273b1..b798c7d29 100644 --- a/docs/src/snap/reference/versions/1.31.md +++ b/docs/canonicalk8s/snap/reference/versions/1.31.md @@ -52,7 +52,7 @@ Many thanks to [@neoaggelos], [@bschimke95], [@evilnick], [nodes]: ../../tutorial/add-remove-nodes [COS Lite]: https://charmhub.io/cos-lite [networking]: ../../howto/networking/index -[observability documentation]: ../../../charm/howto/cos-lite +[observability documentation]: /charm/howto/cos-lite [release cycle page]: https://ubuntu.com/about/release-cycle#canonical-kubernetes-release-cycle [AppArmor tutorial]: https://kubernetes.io/docs/tutorials/security/apparmor/ [SHA-1]: https://kubernetes.io/blog/2024/08/13/kubernetes-v1-31-release/#a-note-about-sha-1-signature-support diff --git a/docs/src/snap/reference/versions/1.32.md b/docs/canonicalk8s/snap/reference/versions/1.32.md similarity index 100% rename from docs/src/snap/reference/versions/1.32.md rename to docs/canonicalk8s/snap/reference/versions/1.32.md diff --git a/docs/src/snap/tutorial/add-remove-nodes.md b/docs/canonicalk8s/snap/tutorial/add-remove-nodes.md similarity index 100% rename from docs/src/snap/tutorial/add-remove-nodes.md rename to docs/canonicalk8s/snap/tutorial/add-remove-nodes.md diff --git a/docs/src/snap/tutorial/getting-started.md b/docs/canonicalk8s/snap/tutorial/getting-started.md similarity index 98% rename from docs/src/snap/tutorial/getting-started.md rename to docs/canonicalk8s/snap/tutorial/getting-started.md index 91a56f41c..03b64debe 100644 --- a/docs/src/snap/tutorial/getting-started.md +++ b/docs/canonicalk8s/snap/tutorial/getting-started.md @@ -165,7 +165,7 @@ Let's create a `PersistentVolumeClaim` and use it in a `Pod`. For example, we can deploy the following manifest: ``` -sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/src/assets/tutorial-pod-with-pvc.yaml +sudo k8s kubectl apply -f https://raw.githubusercontent.com/canonical/k8s-snap/main/docs/canonicalk8s/assets/tutorial-pod-with-pvc.yaml ``` This command deploys a pod based on the YAML configuration of a diff --git a/docs/src/snap/tutorial/index.md b/docs/canonicalk8s/snap/tutorial/index.md similarity index 100% rename from docs/src/snap/tutorial/index.md rename to docs/canonicalk8s/snap/tutorial/index.md diff --git a/docs/src/snap/tutorial/kubectl.md b/docs/canonicalk8s/snap/tutorial/kubectl.md similarity index 100% rename from docs/src/snap/tutorial/kubectl.md rename to docs/canonicalk8s/snap/tutorial/kubectl.md diff --git a/docs/canonicalk8s/src b/docs/canonicalk8s/src deleted file mode 120000 index e057607ed..000000000 --- a/docs/canonicalk8s/src +++ /dev/null @@ -1 +0,0 @@ -../src/ \ No newline at end of file diff --git a/docs/moonray/howto/install.md b/docs/moonray/howto/install.md index df8040541..d9558127b 100644 --- a/docs/moonray/howto/install.md +++ b/docs/moonray/howto/install.md @@ -1,4 +1,4 @@ -```{include} ../../src/snap/howto/install/snap.md +```{include} /snap/howto/install/snap.md ``` diff --git a/docs/src/.markdownlint.json b/docs/src/.markdownlint.json deleted file mode 100644 index 7c2088dbd..000000000 --- a/docs/src/.markdownlint.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "default": false, - "MD003": { "style": "atx" }, - "MD013": { "code_blocks": false, "tables": false, "stern": true, "line_length": 80}, - "MD014": true, - "MD018": true, - "MD022": true, - "MD023": true, - "MD026": { "punctuation": ".,;。,;"}, - "MD031": { "list_items": false}, - "MD032": true, - "MD035": true, - "MD042": true, - "MD045": true, - "MD052": true -} diff --git a/docs/src/about.md b/docs/src/about.md deleted file mode 100644 index a35d8cebc..000000000 --- a/docs/src/about.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} /src/snap/explanation/about.md -``` diff --git a/docs/src/capi/explanation/about.md b/docs/src/capi/explanation/about.md deleted file mode 100644 index 85e219f9f..000000000 --- a/docs/src/capi/explanation/about.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} ../../snap/explanation/about.md -``` diff --git a/docs/src/capi/reference/ports-and-services.md b/docs/src/capi/reference/ports-and-services.md deleted file mode 100644 index d81070a22..000000000 --- a/docs/src/capi/reference/ports-and-services.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} /src/snap/reference/ports-and-services.md -``` diff --git a/docs/src/charm/explanation/installation-methods.md b/docs/src/charm/explanation/installation-methods.md deleted file mode 100644 index f98c2a69c..000000000 --- a/docs/src/charm/explanation/installation-methods.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} ../../snap/explanation/installation-methods.md -``` diff --git a/docs/src/charm/reference/ports-and-services.md b/docs/src/charm/reference/ports-and-services.md deleted file mode 100644 index d81070a22..000000000 --- a/docs/src/charm/reference/ports-and-services.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} /src/snap/reference/ports-and-services.md -``` diff --git a/docs/src/community.md b/docs/src/community.md deleted file mode 100644 index 1fd1850de..000000000 --- a/docs/src/community.md +++ /dev/null @@ -1,2 +0,0 @@ -```{include} /src/snap/reference/community.md -``` diff --git a/docs/src/snap/reference/commands.md b/docs/src/snap/reference/commands.md deleted file mode 100644 index c4103c980..000000000 --- a/docs/src/snap/reference/commands.md +++ /dev/null @@ -1,59 +0,0 @@ -# Commands - -These are the commands provided by the k8s snap: - -```{include} ../../_parts/commands/k8s.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_bootstrap.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_config.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_disable.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_enable.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_get-join-token.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_get.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_join-cluster.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_kubectl.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_remove-node.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_set.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_status.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_refresh-certs.md - :end-before: '### SEE ALSO' -``` - -```{include} ../../_parts/commands/k8s_completion.md - :end-before: '### SEE ALSO' -``` diff --git a/docs/tools/.custom_wordlist.txt b/docs/tools/.custom_wordlist.txt deleted file mode 100644 index 723c32870..000000000 --- a/docs/tools/.custom_wordlist.txt +++ /dev/null @@ -1,266 +0,0 @@ -adapter's -adapters -allocatable -allocator -AlwaysPullImages -api -apiserver -apparmor -AppArmor -args -ARP -asn -ASN -autostart -autosuspend -aws -backend -backported -balancers -benoitblanchon -bgp -BGP -bootloader -CABPCK -CACPCK -capi -CAPI -CAs -Center -ceph -Ceph -cephcsi -cephx -cgroup -cgroups -cidr -CIDR -cidrs -CIDRs -CK8sControlPlane -CLI -CLIs -CloudFormation -ClusterAPI -clusterctl -ClusterRole -ClusterRoleBinding -CMK -CNI -Commenter -config -configMap -ConfigMap -containerd -CoreDNS -Corosync -CPUs -cpuset -crt -csi -CSI -CSRs -cyclictest -daemonset -DaemonSet -datastore -datastores -dbus -de -deallocation -deployable -discoverable -DMA -dns -DNS -DPDK -DRBD -drv -dqlite -EAL -EasyRSA -enp -enum -etcd -EventRateLimit -failover -gapped -GCP -ghcr -Gi -github -GPLv -Graber -Graber's -grafana -haircommander -Harbor -hostname -hostpath -HPC -html -http -https -HugePage -HugePages -iavf -init -initialise -integrations -io -IOMMU -IOV -ip -IPv -IPv4 -IPv6 -IRQs -Jinja -jitter -juju -Juju's -KMS -kube -kube-apiserver -kube-controller-manager -kube-proxy -kube-scheduler -kube-system -kubeconfig -kubectl -kubelet -kubepods -kubernetes -latencies -Latencies -libcontainer -lifecycle -linux -Lite's -LoadBalancer -localhost -Lookaside -lookups -loopback -LPM -lxc -LxcSecurity -LXD -MAAS -macOS -Maskable -MCE -MetalLB -Microbot -MicroCluster -MicroK -MicroK8s -MinIO -modprobe -Moonray -mq -mtu -MTU -multicast -MULTICAST -Multipass -Multus -nameservers -Netplan -NetworkAttachmentDefinition -NFD -NFV -nginx -NGINX -NIC -NMI -nodeport -nohz -NUMA -numactl -OCI -OOM -OpenStack -OSDs -ParseDuration -passthrough -passwordless -pci -PEM -performant -PID -PMD -PMDs -PPA -proc -programmatically -provisioner -PRs -PV -qdisc -qlen -QoS -RADOS -rbac -RBAC -RBD -rc -RCU -README -regctl -regsync -roadmap -Rockcraft -rollout -runtimes -rw -sandboxed -SANs -scalable -SCHED -sControlPlane -sd -SELinux -ServiceAccount -Snapcraft -snapd -SR-IOV -stackexchange -stgraber -STONITH -StorageClass -sudo -sys -systemd -taskset -Telco -throughs -tickless -TLB -tls -TLS -toml -TSC -TTL -ttyS -ubuntu -unix -unschedulable -unsquashed -Velero -vf -VF -vfio -VFIO -VFs -virtualised -VLAN -VMs -VMware -VNFs -VPCs -VSphere -WIP -www -yaml -YAMLs diff --git a/docs/tools/.readthedocs.yaml b/docs/tools/.readthedocs.yaml deleted file mode 100644 index 50d3ec40e..000000000 --- a/docs/tools/.readthedocs.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# .readthedocs.yaml -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -# Required -version: 2 - -# Set the version of Python and other tools you might need -build: - os: ubuntu-22.04 - tools: - python: "3.12" - jobs: - post_checkout: - # Cancel building pull requests when there aren't changed in the docs directory or YAML file. - # - # https://docs.readthedocs.io/en/latest/build-customization.html#cancel-build-based-on-a-condition - # If there are no changes (git diff exits with 0) we force the command to return with 183. - # This is a special exit code on Read the Docs that will cancel the build immediately. - - | - if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- docs/ .readthedocs.yaml; - then - exit 183; - fi - pre_build: - - cp -r docs/src/* docs/tools/ - -# Build documentation in the docs/ directory with Sphinx -sphinx: - builder: dirhtml - configuration: docs/tools/conf.py - -# If using Sphinx, optionally build your docs in additional formats such as PDF -formats: - - pdf - -# Optionally declare the Python requirements required to build your docs -python: - install: - - requirements: docs/tools/.sphinx/requirements.txt diff --git a/docs/tools/.sphinx/_static/404.svg b/docs/tools/.sphinx/_static/404.svg deleted file mode 100644 index b353cd339..000000000 --- a/docs/tools/.sphinx/_static/404.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/docs/tools/.sphinx/_static/custom.css b/docs/tools/.sphinx/_static/custom.css deleted file mode 100644 index 2b9e81fb1..000000000 --- a/docs/tools/.sphinx/_static/custom.css +++ /dev/null @@ -1,392 +0,0 @@ -/** - Ubuntu variable font definitions. - Based on https://github.com/canonical/vanilla-framework/blob/main/scss/_base_fontfaces.scss - - When font files are updated in Vanilla, the links to font files will need to be updated here as well. -*/ - -/* default font set */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/f1ea362b-Ubuntu%5Bwdth,wght%5D-latin-v0.896a.woff2') format('woff2-variations'); -} - -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: italic; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/90b59210-Ubuntu-Italic%5Bwdth,wght%5D-latin-v0.896a.woff2') format('woff2-variations'); -} - -@font-face { - font-family: 'Ubuntu Mono variable'; - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/d5fc1819-UbuntuMono%5Bwght%5D-latin-v0.869.woff2') format('woff2-variations'); -} - -/* cyrillic-ext */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/77cd6650-Ubuntu%5Bwdth,wght%5D-cyrillic-extended-v0.896a.woff2') format('woff2-variations'); - unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; -} - -/* cyrillic */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/2702fce5-Ubuntu%5Bwdth,wght%5D-cyrillic-v0.896a.woff2') format('woff2-variations'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} - -/* greek-ext */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/5c108b7d-Ubuntu%5Bwdth,wght%5D-greek-extended-v0.896a.woff2') format('woff2-variations'); - unicode-range: U+1F00-1FFF; -} - -/* greek */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/0a14c405-Ubuntu%5Bwdth,wght%5D-greek-v0.896a.woff2') format('woff2-variations'); - unicode-range: U+0370-03FF; -} - -/* latin-ext */ -@font-face { - font-family: 'Ubuntu variable'; - font-stretch: 100%; /* min and max value for the width axis, expressed as percentage */ - font-style: normal; - font-weight: 100 800; /* min and max value for the weight axis */ - src: url('https://assets.ubuntu.com/v1/19f68eeb-Ubuntu%5Bwdth,wght%5D-latin-extended-v0.896a.woff2') format('woff2-variations'); - unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; -} - - -/** Define font-weights as per Vanilla - Based on: https://github.com/canonical/vanilla-framework/blob/main/scss/_base_typography-definitions.scss - - regular text: 400, - bold: 550, - thin: 300, - - h1: bold, - h2: 180; - h3: bold, - h4: 275, - h5: bold, - h6: regular -*/ - -/* default regular text */ -html { - font-weight: 400; -} - -/* heading specific definitions */ -h1, h3, h5 { font-weight: 550; } -h2 { font-weight: 180; } -h4 { font-weight: 275; } - -/* bold */ -.toc-tree li.scroll-current>.reference, -dl.glossary dt, -dl.simple dt, -dl:not([class]) dt { - font-weight: 550; -} - - -/** Table styling **/ - -th.head { - text-transform: uppercase; - font-size: var(--font-size--small); - text-align: initial; -} - -table.align-center th.head { - text-align: center -} - -table.docutils { - border: 0; - box-shadow: none; - width:100%; -} - -table.docutils td, table.docutils th, table.docutils td:last-child, table.docutils th:last-child, table.docutils td:first-child, table.docutils th:first-child { - border-right: none; - border-left: none; -} - -/* Allow to centre text horizontally in table data cells */ -table.align-center { - text-align: center !important; -} - -/** No rounded corners **/ - -.admonition, code.literal, .sphinx-tabs-tab, .sphinx-tabs-panel, .highlight { - border-radius: 0; -} - -/** Admonition styling **/ - -.admonition { - border-top: 1px solid #d9d9d9; - border-right: 1px solid #d9d9d9; - border-bottom: 1px solid #d9d9d9; -} - -/** Color for the "copy link" symbol next to headings **/ - -a.headerlink { - color: var(--color-brand-primary); -} - -/** Line to the left of the current navigation entry **/ - -.sidebar-tree li.current-page { - border-left: 2px solid var(--color-brand-primary); -} - -/** Some tweaks for Sphinx tabs **/ - -[role="tablist"] { - border-bottom: 1px solid var(--color-sidebar-item-background--hover); -} - -.sphinx-tabs-tab[aria-selected="true"], .sd-tab-set>input:checked+label{ - border: 0; - border-bottom: 2px solid var(--color-brand-primary); - font-weight: 400; - font-size: 1rem; - color: var(--color-brand-primary); -} - -body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { - background: var(--color-background-primary); - border-bottom: 2px solid var(--color-brand-primary); -} - -button.sphinx-tabs-tab[aria-selected="false"]:hover, .sd-tab-set>input:not(:checked)+label:hover { - border-bottom: 2px solid var(--color-foreground-border); -} - -button.sphinx-tabs-tab[aria-selected="false"]{ - border-bottom: 2px solid var(--color-background-primary); -} - -body[data-theme="dark"] .sphinx-tabs-tab { - background: var(--color-background-primary); -} - -.sphinx-tabs-tab, .sd-tab-set>label{ - color: var(--color-brand-primary); - font-family: var(--font-stack); - font-weight: 400; - font-size: 1rem; - padding: 1em 1.25em .5em -} - -.sphinx-tabs-panel { - border: 0; - border-bottom: 1px solid var(--color-sidebar-item-background--hover); - background: var(--color-background-primary); - padding: 0.75rem 0 0.75rem 0; -} - -body[data-theme="dark"] .sphinx-tabs-panel { - background: var(--color-background-primary); -} - -/** A tweak for issue #190 **/ - -.highlight .hll { - background-color: var(--color-highlighted-background); -} - - -/** Custom classes to fix scrolling in tables by decreasing the - font size or breaking certain columns. - Specify the classes in the Markdown file with, for example: - ```{rst-class} break-col-4 min-width-4-8 - ``` -**/ - -table.dec-font-size { - font-size: smaller; -} -table.break-col-1 td.text-left:first-child { - word-break: break-word; -} -table.break-col-4 td.text-left:nth-child(4) { - word-break: break-word; -} -table.min-width-1-15 td.text-left:first-child { - min-width: 15em; -} -table.min-width-4-8 td.text-left:nth-child(4) { - min-width: 8em; -} - -/** Underline for abbreviations **/ - -abbr[title] { - text-decoration: underline solid #cdcdcd; -} - -/** Use the same style for right-details as for left-details **/ -.bottom-of-page .right-details { - font-size: var(--font-size--small); - display: block; -} - -/** Version switcher */ -button.version_select { - color: var(--color-foreground-primary); - background-color: var(--color-toc-background); - padding: 5px 10px; - border: none; -} - -.version_select:hover, .version_select:focus { - background-color: var(--color-sidebar-item-background--hover); -} - -.version_dropdown { - position: relative; - display: inline-block; - text-align: right; - font-size: var(--sidebar-item-font-size); -} - -.available_versions { - display: none; - position: absolute; - right: 0px; - background-color: var(--color-toc-background); - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 11; -} - -.available_versions a { - color: var(--color-foreground-primary); - padding: 12px 16px; - text-decoration: none; - display: block; -} - -.available_versions a:hover {background-color: var(--color-sidebar-item-background--current)} - -/** Suppress link underlines outside on-hover **/ -a { - text-decoration: none; -} - -a:hover, a:visited:hover { - text-decoration: underline; -} - -.show {display:block;} - -/** Fix for nested numbered list - the nested list is lettered **/ -ol.arabic ol.arabic { - list-style: lower-alpha; -} - -/** Make expandable sections look like links **/ -details summary { - color: var(--color-link); -} - -/** Fix the styling of the version box for readthedocs **/ - -#furo-readthedocs-versions .rst-versions, #furo-readthedocs-versions .rst-current-version, #furo-readthedocs-versions:focus-within .rst-current-version, #furo-readthedocs-versions:hover .rst-current-version { - background: var(--color-sidebar-item-background--hover); -} - -.rst-versions .rst-other-versions dd a { - color: var(--color-link); -} - -#furo-readthedocs-versions:focus-within .rst-current-version .fa-book, #furo-readthedocs-versions:hover .rst-current-version .fa-book, .rst-versions .rst-other-versions { - color: var(--color-sidebar-link-text); -} - -.rst-versions .rst-current-version { - color: var(--color-version-popup); - font-weight: bolder; -} - -/* Code-block copybutton invisible by default - (overriding Furo config to achieve default copybutton setting). */ -.highlight button.copybtn { - opacity: 0; -} - -/* Mimicking the 'Give feedback' button for UX consistency */ -.sidebar-search-container input[type=submit] { - color: #FFFFFF; - border: 2px solid #D6410D; - padding: var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal); - background: #D6410D; - font-weight: bold; - font-size: var(--font-size--small); - cursor: pointer; -} - -.sidebar-search-container input[type=submit]:hover { - text-decoration: underline; -} - -/* Make inline code the same size as code blocks */ -p code.literal { - border: 0; - font-size: var(--code-font-size); -} - -/* Use the general admonition font size for inline code */ -.admonition p code.literal { - font-size: var(--admonition-font-size); -} - -.highlight .s, .highlight .s1, .highlight .s2 { - color: #3F8100; -} - -.highlight .o { - color: #BB5400; -} - -.rubric > .hclass2 { - display: block; - font-size: 2em; - border-radius: .5rem; - font-weight: 300; - line-height: 1.25; - margin-top: 1.75rem; - margin-right: -0.5rem; - margin-bottom: 0.5rem; - margin-left: -0.5rem; - padding-left: .5rem; - padding-right: .5rem; -} \ No newline at end of file diff --git a/docs/tools/.sphinx/_static/favicon.png b/docs/tools/.sphinx/_static/favicon.png deleted file mode 100644 index 7f175e461..000000000 Binary files a/docs/tools/.sphinx/_static/favicon.png and /dev/null differ diff --git a/docs/tools/.sphinx/_static/footer.css b/docs/tools/.sphinx/_static/footer.css deleted file mode 100644 index a0a1db454..000000000 --- a/docs/tools/.sphinx/_static/footer.css +++ /dev/null @@ -1,47 +0,0 @@ -.display-contributors { - color: var(--color-sidebar-link-text); - cursor: pointer; -} -.all-contributors { - display: none; - z-index: 55; - list-style: none; - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 200px; - height: 200px; - overflow-y: scroll; - margin: auto; - padding: 0; - background: var(--color-background-primary); - scrollbar-color: var(--color-foreground-border) transparent; - scrollbar-width: thin; -} - -.all-contributors li:hover { - background: var(--color-sidebar-item-background--hover); - width: 100%; -} - -.all-contributors li a{ - color: var(--color-sidebar-link-text); - padding: 1rem; - display: inline-block; -} - -#overlay { - position: fixed; - display: none; - width: 100%; - height: 100%; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0,0,0,0.5); - z-index: 2; - cursor: pointer; -} diff --git a/docs/tools/.sphinx/_static/footer.js b/docs/tools/.sphinx/_static/footer.js deleted file mode 100644 index 9a08b1e99..000000000 --- a/docs/tools/.sphinx/_static/footer.js +++ /dev/null @@ -1,12 +0,0 @@ -$(document).ready(function() { - $(document).on("click", function () { - $(".all-contributors").hide(); - $("#overlay").hide(); - }); - - $('.display-contributors').click(function(event) { - $('.all-contributors').toggle(); - $("#overlay").toggle(); - event.stopPropagation(); - }); -}) diff --git a/docs/tools/.sphinx/_static/furo_colors.css b/docs/tools/.sphinx/_static/furo_colors.css deleted file mode 100644 index 4cfdbe7bf..000000000 --- a/docs/tools/.sphinx/_static/furo_colors.css +++ /dev/null @@ -1,89 +0,0 @@ -body { - --color-code-background: #f8f8f8; - --color-code-foreground: black; - --code-font-size: 1rem; - --font-stack: Ubuntu variable, Ubuntu, -apple-system, Segoe UI, Roboto, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; - --font-stack--monospace: Ubuntu Mono variable, Ubuntu Mono, Consolas, Monaco, Courier, monospace; - --color-foreground-primary: #111; - --color-foreground-secondary: var(--color-foreground-primary); - --color-foreground-muted: #333; - --color-background-secondary: #FFF; - --color-background-hover: #f2f2f2; - --color-brand-primary: #111; - --color-brand-content: #06C; - --color-api-background: #E3E3E3; - --color-inline-code-background: rgba(0,0,0,.03); - --color-sidebar-link-text: #111; - --color-sidebar-item-background--current: #ebebeb; - --color-sidebar-item-background--hover: #f2f2f2; - --toc-font-size: var(--font-size--small); - --color-admonition-title-background--note: var(--color-background-primary); - --color-admonition-title-background--tip: var(--color-background-primary); - --color-admonition-title-background--important: var(--color-background-primary); - --color-admonition-title-background--caution: var(--color-background-primary); - --color-admonition-title--note: #24598F; - --color-admonition-title--tip: #24598F; - --color-admonition-title--important: #C7162B; - --color-admonition-title--caution: #F99B11; - --color-highlighted-background: #EBEBEB; - --color-link-underline: var(--color-link); - --color-link-underline--hover: var(--color-link); - --color-link-underline--visited: var(--color-link--visited); - --color-link-underline--visited--hover: var(--color-link--visited); - --color-version-popup: #772953; -} - -@media not print { - body[data-theme="dark"] { - --color-code-background: #202020; - --color-code-foreground: #d0d0d0; - --color-foreground-secondary: var(--color-foreground-primary); - --color-foreground-muted: #CDCDCD; - --color-background-secondary: var(--color-background-primary); - --color-background-hover: #666; - --color-brand-primary: #fff; - --color-brand-content: #69C; - --color-sidebar-link-text: #f7f7f7; - --color-sidebar-item-background--current: #666; - --color-sidebar-item-background--hover: #333; - --color-admonition-background: transparent; - --color-admonition-title-background--note: var(--color-background-primary); - --color-admonition-title-background--tip: var(--color-background-primary); - --color-admonition-title-background--important: var(--color-background-primary); - --color-admonition-title-background--caution: var(--color-background-primary); - --color-admonition-title--note: #24598F; - --color-admonition-title--tip: #24598F; - --color-admonition-title--important: #C7162B; - --color-admonition-title--caution: #F99B11; - --color-highlighted-background: #666; - --color-version-popup: #F29879; - } - @media (prefers-color-scheme: dark) { - body:not([data-theme="light"]) { - --color-api-background: #A4A4A4; - --color-code-background: #202020; - --color-code-foreground: #d0d0d0; - --color-foreground-secondary: var(--color-foreground-primary); - --color-foreground-muted: #CDCDCD; - --color-background-secondary: var(--color-background-primary); - --color-background-hover: #666; - --color-brand-primary: #fff; - --color-brand-content: #69C; - --color-sidebar-link-text: #f7f7f7; - --color-sidebar-item-background--current: #666; - --color-sidebar-item-background--hover: #333; - --color-admonition-background: transparent; - --color-admonition-title-background--note: var(--color-background-primary); - --color-admonition-title-background--tip: var(--color-background-primary); - --color-admonition-title-background--important: var(--color-background-primary); - --color-admonition-title-background--caution: var(--color-background-primary); - --color-admonition-title--note: #24598F; - --color-admonition-title--tip: #24598F; - --color-admonition-title--important: #C7162B; - --color-admonition-title--caution: #F99B11; - --color-highlighted-background: #666; - --color-link: #F9FCFF; - --color-version-popup: #F29879; - } - } -} diff --git a/docs/tools/.sphinx/_static/github_issue_links.css b/docs/tools/.sphinx/_static/github_issue_links.css deleted file mode 100644 index db166ed95..000000000 --- a/docs/tools/.sphinx/_static/github_issue_links.css +++ /dev/null @@ -1,24 +0,0 @@ -.github-issue-link-container { - padding-right: 0.5rem; -} -.github-issue-link { - font-size: var(--font-size--small); - font-weight: bold; - background-color: #D6410D; - padding: 13px 23px; - text-decoration: none; -} -.github-issue-link:link { - color: #FFFFFF; -} -.github-issue-link:visited { - color: #FFFFFF -} -.muted-link.github-issue-link:hover { - color: #FFFFFF; - text-decoration: underline; -} -.github-issue-link:active { - color: #FFFFFF; - text-decoration: underline; -} diff --git a/docs/tools/.sphinx/_static/github_issue_links.js b/docs/tools/.sphinx/_static/github_issue_links.js deleted file mode 100644 index f0706038b..000000000 --- a/docs/tools/.sphinx/_static/github_issue_links.js +++ /dev/null @@ -1,34 +0,0 @@ -// if we already have an onload function, save that one -var prev_handler = window.onload; - -window.onload = function() { - // call the previous onload function - if (prev_handler) { - prev_handler(); - } - - const link = document.createElement("a"); - link.classList.add("muted-link"); - link.classList.add("github-issue-link"); - link.text = "Give feedback"; - link.href = ( - github_url - + "/issues/new?" - + "title=docs%3A+TYPE+YOUR+QUESTION+HERE" - + "&body=*Please describe the question or issue you're facing with " - + `"${document.title}"` - + ".*" - + "%0A%0A%0A%0A%0A" - + "---" - + "%0A" - + `*Reported+from%3A+${location.href}*` - ); - link.target = "_blank"; - - const div = document.createElement("div"); - div.classList.add("github-issue-link-container"); - div.append(link) - - const container = document.querySelector(".article-container > .content-icon-container"); - container.prepend(div); -}; diff --git a/docs/tools/.sphinx/_static/header-nav.js b/docs/tools/.sphinx/_static/header-nav.js deleted file mode 100644 index 3608576e0..000000000 --- a/docs/tools/.sphinx/_static/header-nav.js +++ /dev/null @@ -1,10 +0,0 @@ -$(document).ready(function() { - $(document).on("click", function () { - $(".more-links-dropdown").hide(); - }); - - $('.nav-more-links').click(function(event) { - $('.more-links-dropdown').toggle(); - event.stopPropagation(); - }); -}) diff --git a/docs/tools/.sphinx/_static/header.css b/docs/tools/.sphinx/_static/header.css deleted file mode 100644 index 0b9440903..000000000 --- a/docs/tools/.sphinx/_static/header.css +++ /dev/null @@ -1,167 +0,0 @@ -.p-navigation { - border-bottom: 1px solid var(--color-sidebar-background-border); -} - -.p-navigation__nav { - background: #333333; - display: flex; -} - -.p-logo { - display: flex !important; - padding-top: 0 !important; - text-decoration: none; -} - -.p-logo-image { - height: 44px; - padding-right: 10px; -} - -.p-logo-text { - margin-top: 18px; - color: white; - text-decoration: none; -} - -ul.p-navigation__links { - display: flex; - list-style: none; - margin-left: 0; - margin-top: auto; - margin-bottom: auto; - max-width: 800px; - width: 100%; -} - -ul.p-navigation__links li { - margin: 0 auto; - text-align: center; - width: 100%; -} - -ul.p-navigation__links li a { - background-color: rgba(0, 0, 0, 0); - border: none; - border-radius: 0; - color: var(--color-sidebar-link-text); - display: block; - font-weight: 400; - line-height: 1.5rem; - margin: 0; - overflow: hidden; - padding: 1rem 0; - position: relative; - text-align: left; - text-overflow: ellipsis; - transition-duration: .1s; - transition-property: background-color, color, opacity; - transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - white-space: nowrap; - width: 100%; -} - -ul.p-navigation__links .p-navigation__link { - color: #ffffff; - font-weight: 300; - text-align: center; - text-decoration: none; -} - -ul.p-navigation__links .p-navigation__link:hover { - background-color: #2b2b2b; -} - -ul.p-navigation__links .p-dropdown__link:hover { - background-color: var(--color-sidebar-item-background--hover); -} - -ul.p-navigation__links .p-navigation__sub-link { - background: var(--color-background-primary); - padding: .5rem 0 .5rem .5rem; - font-weight: 300; -} - -ul.p-navigation__links .more-links-dropdown li a { - border-left: 1px solid var(--color-sidebar-background-border); - border-right: 1px solid var(--color-sidebar-background-border); -} - -ul.p-navigation__links .more-links-dropdown li:first-child a { - border-top: 1px solid var(--color-sidebar-background-border); -} - -ul.p-navigation__links .more-links-dropdown li:last-child a { - border-bottom: 1px solid var(--color-sidebar-background-border); -} - -ul.p-navigation__links .p-navigation__logo { - padding: 0.5rem; -} - -ul.p-navigation__links .p-navigation__logo img { - width: 40px; -} - -ul.more-links-dropdown { - display: none; - overflow-x: visible; - height: 0; - z-index: 55; - padding: 0; - position: relative; - list-style: none; - margin-bottom: 0; - margin-top: 0; -} - -.nav-more-links::after { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Cpath fill='%23111' d='M8.187 11.748l6.187-6.187-1.06-1.061-5.127 5.127L3.061 4.5 2 5.561z'/%3E%3C/svg%3E"); - background-position: center; - background-repeat: no-repeat; - background-size: contain; - content: ""; - display: block; - filter: invert(100%); - height: 1rem; - pointer-events: none; - position: absolute; - right: 1rem; - text-indent: calc(100% + 10rem); - top: calc(1rem + 0.25rem); - width: 1rem; -} - -.nav-ubuntu-com { - display: none; -} - -@media only screen and (min-width: 480px) { - ul.p-navigation__links li { - width: 100%; - } - - .nav-ubuntu-com { - display: inherit; - } -} - -@media only screen and (max-width: 800px) { - .nav-more-links { - margin-left: auto !important; - padding-right: 2rem !important; - width: 8rem !important; - } -} - -@media only screen and (min-width: 800px) { - ul.p-navigation__links li { - width: 100% !important; - } -} - -@media only screen and (min-width: 1310px) { - ul.p-navigation__links { - margin-left: calc(50% - 41em); - } -} diff --git a/docs/tools/.sphinx/_static/tag.png b/docs/tools/.sphinx/_static/tag.png deleted file mode 100644 index f6f6e5aa4..000000000 Binary files a/docs/tools/.sphinx/_static/tag.png and /dev/null differ diff --git a/docs/tools/.sphinx/_templates/404.html b/docs/tools/.sphinx/_templates/404.html deleted file mode 100644 index 4cb2d50d3..000000000 --- a/docs/tools/.sphinx/_templates/404.html +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "page.html" %} - -{% block content -%} -
-

Page not found

-
-
-
- {{ body }} -
-
- Penguin with a question mark -
-
-
-
-{%- endblock content %} diff --git a/docs/tools/.sphinx/_templates/base.html b/docs/tools/.sphinx/_templates/base.html deleted file mode 100644 index 33081547c..000000000 --- a/docs/tools/.sphinx/_templates/base.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends "furo/base.html" %} - -{% block theme_scripts %} - -{% endblock theme_scripts %} - -{# ru-fu: don't include the color variables from the conf.py file, but use a - separate CSS file to save space #} -{% block theme_styles %} -{% endblock theme_styles %} diff --git a/docs/tools/.sphinx/_templates/footer.html b/docs/tools/.sphinx/_templates/footer.html deleted file mode 100644 index 6839f0154..000000000 --- a/docs/tools/.sphinx/_templates/footer.html +++ /dev/null @@ -1,131 +0,0 @@ -{# ru-fu: copied from Furo, with modifications as stated below. Modifications are marked 'mod:'. #} - - -
-
- {%- if show_copyright %} - - {%- endif %} - - {# mod: removed "Made with" #} - - {%- if last_updated -%} -
- {% trans last_updated=last_updated|e -%} - Last updated on {{ last_updated }} - {%- endtrans -%} -
- {%- endif %} - - {%- if show_source and has_source and sourcename %} - - {%- endif %} -
-
- {% if github_url and github_folder and pagename and page_source_suffix and display_contributors %} - {% set contributors = get_contribs(github_url, github_folder, pagename, page_source_suffix, display_contributors_since) %} - {% if contributors %} - {% if contributors | length > 1 %} - Thanks to the {{ contributors |length }} contributors! - {% else %} - Thanks to our contributor! - {% endif %} -
- - {% endif %} - {% endif %} -
-
- - {# mod: replaced RTD icons with our links #} - - {% if discourse %} - - {% endif %} - - {% if mattermost %} - - {% endif %} - - {% if matrix %} - - {% endif %} - - {% if github_url and github_version and github_folder %} - - {% if github_issues %} - - {% endif %} - - - {% endif %} - - -
-
- diff --git a/docs/tools/.sphinx/_templates/header.html b/docs/tools/.sphinx/_templates/header.html deleted file mode 100644 index 1a128b6f8..000000000 --- a/docs/tools/.sphinx/_templates/header.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/docs/tools/.sphinx/_templates/page.html b/docs/tools/.sphinx/_templates/page.html deleted file mode 100644 index bda306109..000000000 --- a/docs/tools/.sphinx/_templates/page.html +++ /dev/null @@ -1,49 +0,0 @@ -{% extends "furo/page.html" %} - -{% block footer %} - {% include "footer.html" %} -{% endblock footer %} - -{% block body -%} - {% include "header.html" %} - {{ super() }} -{%- endblock body %} - -{% if meta and ((meta.discourse and discourse_prefix) or meta.relatedlinks) %} - {% set furo_hide_toc_orig = furo_hide_toc %} - {% set furo_hide_toc=false %} -{% endif %} - -{% block right_sidebar %} -
- {% if not furo_hide_toc_orig %} -
- - {{ _("Contents") }} - -
-
-
- {{ toc }} -
-
- {% endif %} - {% if meta and ((meta.discourse and discourse_prefix) or meta.relatedlinks) %} - - - {% endif %} -
-{% endblock right_sidebar %} diff --git a/docs/tools/.sphinx/_templates/sidebar/search.html b/docs/tools/.sphinx/_templates/sidebar/search.html deleted file mode 100644 index 644a5ef6a..000000000 --- a/docs/tools/.sphinx/_templates/sidebar/search.html +++ /dev/null @@ -1,7 +0,0 @@ - - diff --git a/docs/tools/.sphinx/build_requirements.py b/docs/tools/.sphinx/build_requirements.py deleted file mode 100644 index 1e2aab9cb..000000000 --- a/docs/tools/.sphinx/build_requirements.py +++ /dev/null @@ -1,127 +0,0 @@ -import sys - -sys.path.append('./') -from custom_conf import * - -# The file contains helper functions and the mechanism to build the -# .sphinx/requirements.txt file that is needed to set up the virtual -# environment. - -# You should not do any modifications to this file. Put your custom -# requirements into the custom_required_modules array in the custom_conf.py -# file. If you need to change this file, contribute the changes upstream. - -legacyCanonicalSphinxExtensionNames = [ - "youtube-links", - "related-links", - "custom-rst-roles", - "terminal-output" - ] - -def IsAnyCanonicalSphinxExtensionUsed(): - for extension in custom_extensions: - if (extension.startswith("canonical.") or - extension in legacyCanonicalSphinxExtensionNames): - return True - - return False - -def IsNotFoundExtensionUsed(): - return "notfound.extension" in custom_extensions - -def IsSphinxTabsUsed(): - for extension in custom_extensions: - if extension.startswith("sphinx_tabs."): - return True - - return False - -def AreRedirectsDefined(): - return ("sphinx_reredirects" in custom_extensions) or ( - ("redirects" in globals()) and \ - (redirects is not None) and \ - (len(redirects) > 0)) - -def IsOpenGraphConfigured(): - if "sphinxext.opengraph" in custom_extensions: - return True - - for global_variable_name in list(globals()): - if global_variable_name.startswith("ogp_"): - return True - - return False - -def IsMyStParserUsed(): - return ("myst_parser" in custom_extensions) or \ - ("custom_myst_extensions" in globals()) - -def DeduplicateExtensions(extensionNames: [str]): - extensionNames = dict.fromkeys(extensionNames) - resultList = [] - encounteredCanonicalExtensions = [] - - for extensionName in extensionNames: - if extensionName in legacyCanonicalSphinxExtensionNames: - extensionName = "canonical." + extensionName - - if extensionName.startswith("canonical."): - if extensionName not in encounteredCanonicalExtensions: - encounteredCanonicalExtensions.append(extensionName) - resultList.append(extensionName) - else: - resultList.append(extensionName) - - return resultList - -if __name__ == "__main__": - requirements = [ - "furo", - "pyspelling", - "sphinx", - "sphinx-autobuild", - "sphinx-copybutton", - "sphinx-design", - "sphinxcontrib-jquery", - "watchfiles", - "GitPython>=3.1.41" - - ] - - requirements.extend(custom_required_modules) - - if IsAnyCanonicalSphinxExtensionUsed(): - requirements.append("canonical-sphinx-extensions") - - if IsNotFoundExtensionUsed(): - requirements.append("sphinx-notfound-page") - - if IsSphinxTabsUsed(): - requirements.append("sphinx-tabs") - - if AreRedirectsDefined(): - requirements.append("sphinx-reredirects") - - if IsOpenGraphConfigured(): - requirements.append("sphinxext-opengraph") - - if IsMyStParserUsed(): - requirements.append("myst-parser") - requirements.append("linkify-it-py") - - # removes duplicate entries - requirements = list(dict.fromkeys(requirements)) - requirements.sort() - - with open(".sphinx/requirements.txt", 'w') as requirements_file: - requirements_file.write( - "# DO NOT MODIFY THIS FILE DIRECTLY!\n" - "#\n" - "# This file is generated automatically.\n" - "# Add custom requirements to the custom_required_modules\n" - "# array in the custom_conf.py file and run:\n" - "# make clean && make install\n") - - for requirement in requirements: - requirements_file.write(requirement) - requirements_file.write('\n') diff --git a/docs/tools/.sphinx/fonts/Ubuntu-B.ttf b/docs/tools/.sphinx/fonts/Ubuntu-B.ttf deleted file mode 100644 index b173da274..000000000 Binary files a/docs/tools/.sphinx/fonts/Ubuntu-B.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/Ubuntu-R.ttf b/docs/tools/.sphinx/fonts/Ubuntu-R.ttf deleted file mode 100644 index d748728a2..000000000 Binary files a/docs/tools/.sphinx/fonts/Ubuntu-R.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/Ubuntu-RI.ttf b/docs/tools/.sphinx/fonts/Ubuntu-RI.ttf deleted file mode 100644 index 4f2d2bc7c..000000000 Binary files a/docs/tools/.sphinx/fonts/Ubuntu-RI.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/UbuntuMono-B.ttf b/docs/tools/.sphinx/fonts/UbuntuMono-B.ttf deleted file mode 100644 index 7bd666576..000000000 Binary files a/docs/tools/.sphinx/fonts/UbuntuMono-B.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/UbuntuMono-R.ttf b/docs/tools/.sphinx/fonts/UbuntuMono-R.ttf deleted file mode 100644 index fdd309d71..000000000 Binary files a/docs/tools/.sphinx/fonts/UbuntuMono-R.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/UbuntuMono-RI.ttf b/docs/tools/.sphinx/fonts/UbuntuMono-RI.ttf deleted file mode 100644 index 18f81a292..000000000 Binary files a/docs/tools/.sphinx/fonts/UbuntuMono-RI.ttf and /dev/null differ diff --git a/docs/tools/.sphinx/fonts/ubuntu-font-licence-1.0.txt b/docs/tools/.sphinx/fonts/ubuntu-font-licence-1.0.txt deleted file mode 100644 index ae78a8f94..000000000 --- a/docs/tools/.sphinx/fonts/ubuntu-font-licence-1.0.txt +++ /dev/null @@ -1,96 +0,0 @@ -------------------------------- -UBUNTU FONT LICENCE Version 1.0 -------------------------------- - -PREAMBLE -This licence allows the licensed fonts to be used, studied, modified and -redistributed freely. The fonts, including any derivative works, can be -bundled, embedded, and redistributed provided the terms of this licence -are met. The fonts and derivatives, however, cannot be released under -any other licence. The requirement for fonts to remain under this -licence does not require any document created using the fonts or their -derivatives to be published under this licence, as long as the primary -purpose of the document is not to be a vehicle for the distribution of -the fonts. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this licence and clearly marked as such. This may -include source files, build scripts and documentation. - -"Original Version" refers to the collection of Font Software components -as received under this licence. - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to -a new environment. - -"Copyright Holder(s)" refers to all individuals and companies who have a -copyright ownership of the Font Software. - -"Substantially Changed" refers to Modified Versions which can be easily -identified as dissimilar to the Font Software by users of the Font -Software comparing the Original Version with the Modified Version. - -To "Propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification and with or without charging -a redistribution fee), making available to the public, and in some -countries other activities as well. - -PERMISSION & CONDITIONS -This licence does not grant any rights under trademark law and all such -rights are reserved. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of the Font Software, to propagate the Font Software, subject to -the below conditions: - -1) Each copy of the Font Software must contain the above copyright -notice and this licence. These can be included either as stand-alone -text files, human-readable headers or in the appropriate machine- -readable metadata fields within text or binary files as long as those -fields can be easily viewed by the user. - -2) The font name complies with the following: -(a) The Original Version must retain its name, unmodified. -(b) Modified Versions which are Substantially Changed must be renamed to -avoid use of the name of the Original Version or similar names entirely. -(c) Modified Versions which are not Substantially Changed must be -renamed to both (i) retain the name of the Original Version and (ii) add -additional naming elements to distinguish the Modified Version from the -Original Version. The name of such Modified Versions must be the name of -the Original Version, with "derivative X" where X represents the name of -the new work, appended to that name. - -3) The name(s) of the Copyright Holder(s) and any contributor to the -Font Software shall not be used to promote, endorse or advertise any -Modified Version, except (i) as required by this licence, (ii) to -acknowledge the contribution(s) of the Copyright Holder(s) or (iii) with -their explicit written permission. - -4) The Font Software, modified or unmodified, in part or in whole, must -be distributed entirely under this licence, and must not be distributed -under any other licence. The requirement for fonts to remain under this -licence does not affect any document created using the Font Software, -except any version of the Font Software extracted from a document -created using the Font Software may only be distributed under this -licence. - -TERMINATION -This licence becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF -COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER -DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/tools/.sphinx/get_vale_conf.py b/docs/tools/.sphinx/get_vale_conf.py deleted file mode 100644 index 23d890153..000000000 --- a/docs/tools/.sphinx/get_vale_conf.py +++ /dev/null @@ -1,41 +0,0 @@ -#! /usr/bin/env python - -import requests -import os - -DIR=os.getcwd() - -def main(): - - if os.path.exists(f"{DIR}/.sphinx/styles/Canonical"): - print("Vale directory exists") - else: - os.makedirs(f"{DIR}/.sphinx/styles/Canonical") - - url = "https://api.github.com/repos/canonical/praecepta/contents/styles/Canonical" - r = requests.get(url) - for item in r.json(): - download = requests.get(item["download_url"]) - file = open(".sphinx/styles/Canonical/" + item["name"], "w") - file.write(download.text) - file.close() - - if os.path.exists(f"{DIR}/.sphinx/styles/config/vocabularies/Canonical"): - print("Vocab directory exists") - else: - os.makedirs(f"{DIR}/.sphinx/styles/config/vocabularies/Canonical") - - url = "https://api.github.com/repos/canonical/praecepta/contents/styles/config/vocabularies/Canonical" - r = requests.get(url) - for item in r.json(): - download = requests.get(item["download_url"]) - file = open(".sphinx/styles/config/vocabularies/Canonical/" + item["name"], "w") - file.write(download.text) - file.close() - config = requests.get("https://raw.githubusercontent.com/canonical/praecepta/main/vale.ini") - file = open(".sphinx/vale.ini", "w") - file.write(config.text) - file.close() - -if __name__ == "__main__": - main() diff --git a/docs/tools/.sphinx/images/Canonical-logo-4x.png b/docs/tools/.sphinx/images/Canonical-logo-4x.png deleted file mode 100644 index fd75696eb..000000000 Binary files a/docs/tools/.sphinx/images/Canonical-logo-4x.png and /dev/null differ diff --git a/docs/tools/.sphinx/images/front-page-light.pdf b/docs/tools/.sphinx/images/front-page-light.pdf deleted file mode 100644 index bb68cdf8f..000000000 Binary files a/docs/tools/.sphinx/images/front-page-light.pdf and /dev/null differ diff --git a/docs/tools/.sphinx/images/front-page.png b/docs/tools/.sphinx/images/front-page.png deleted file mode 100644 index c80e84303..000000000 Binary files a/docs/tools/.sphinx/images/front-page.png and /dev/null differ diff --git a/docs/tools/.sphinx/images/normal-page-footer.pdf b/docs/tools/.sphinx/images/normal-page-footer.pdf deleted file mode 100644 index dfd73cbc7..000000000 Binary files a/docs/tools/.sphinx/images/normal-page-footer.pdf and /dev/null differ diff --git a/docs/tools/.sphinx/latex_elements_template.txt b/docs/tools/.sphinx/latex_elements_template.txt deleted file mode 100644 index 2b13b514a..000000000 --- a/docs/tools/.sphinx/latex_elements_template.txt +++ /dev/null @@ -1,119 +0,0 @@ -{ - 'papersize': 'a4paper', - 'pointsize': '11pt', - 'fncychap': '', - 'preamble': r''' -%\usepackage{charter} -%\usepackage[defaultsans]{lato} -%\usepackage{inconsolata} -\setmainfont[UprightFont = *-R, BoldFont = *-B, ItalicFont=*-RI, Extension = .ttf]{Ubuntu} -\setmonofont[UprightFont = *-R, BoldFont = *-B, ItalicFont=*-RI, Extension = .ttf]{UbuntuMono} -\usepackage[most]{tcolorbox} -\tcbuselibrary{breakable} -\usepackage{lastpage} -\usepackage{tabto} -\usepackage{ifthen} -\usepackage{etoolbox} -\usepackage{fancyhdr} -\usepackage{graphicx} -\usepackage{titlesec} -\usepackage{fontspec} -\usepackage{tikz} -\usepackage{changepage} -\usepackage{array} -\usepackage{tabularx} -\definecolor{yellowgreen}{RGB}{154, 205, 50} -\definecolor{title}{RGB}{76, 17, 48} -\definecolor{subtitle}{RGB}{116, 27, 71} -\definecolor{label}{RGB}{119, 41, 100} -\definecolor{copyright}{RGB}{174, 167, 159} -\makeatletter -\def\tcb@finalize@environment{% - \color{.}% hack for xelatex - \tcb@layer@dec% -} -\makeatother -\newenvironment{sphinxclassprompt}{\color{yellowgreen}\setmonofont[Color = 9ACD32, UprightFont = *-R, Extension = .ttf]{UbuntuMono}}{} -\tcbset{enhanced jigsaw, colback=black, fontupper=\color{white}} -\newtcolorbox{termbox}{use color stack, breakable, colupper=white, halign=flush left} -\newenvironment{sphinxclassterminal}{\setmonofont[Color = white, UprightFont = *-R, Extension = .ttf]{UbuntuMono}\sphinxsetup{VerbatimColor={black}}\begin{termbox}}{\end{termbox}} -\newcommand{\dimtorightedge}{% - \dimexpr\paperwidth-1in-\hoffset-\oddsidemargin\relax} -\newcommand{\dimtotop}{% - \dimexpr\height-1in-\voffset-\topmargin-\headheight-\headsep\relax} -\newtoggle{tpage} -\AtBeginEnvironment{titlepage}{\global\toggletrue{tpage}} -\fancypagestyle{plain}{ - \fancyhf{} - \fancyfoot[R]{\thepage\ of \pageref*{LastPage}} - \renewcommand{\headrulewidth}{0pt} - \renewcommand{\footrulewidth}{0pt} -} -\fancypagestyle{normal}{ - \fancyhf{} - \fancyfoot[R]{\thepage\ of \pageref*{LastPage}} - \renewcommand{\headrulewidth}{0pt} - \renewcommand{\footrulewidth}{0pt} -} -\fancypagestyle{titlepage}{% - \fancyhf{} - \fancyfoot[L]{\footnotesize \textcolor{copyright}{© 2024 Canonical Ltd. All rights reserved.}} -} -\newcommand\sphinxbackoftitlepage{\thispagestyle{titlepage}} -\titleformat{\chapter}[block]{\Huge \color{title} \bfseries\filright}{\thechapter .}{1.5ex}{} -\titlespacing{\chapter}{0pt}{0pt}{0pt} -\titleformat{\section}[block]{\huge \bfseries\filright}{\thesection .}{1.5ex}{} -\titlespacing{\section}{0pt}{0pt}{0pt} -\titleformat{\subsection}[block]{\Large \bfseries\filright}{\thesubsection .}{1.5ex}{} -\titlespacing{\subsection}{0pt}{0pt}{0pt} -\setcounter{tocdepth}{1} -\renewcommand\pagenumbering[1]{} -''', - 'sphinxsetup': 'verbatimwithframe=false, pre_border-radius=0pt, verbatimvisiblespace=\\phantom{}, verbatimcontinued=\\phantom{}', - 'extraclassoptions': 'openany,oneside', - 'maketitle': r''' -\begin{titlepage} -\begin{flushleft} - \begin{tikzpicture}[remember picture,overlay] - \node[anchor=south east, inner sep=0] at (current page.south east) { - \includegraphics[width=\paperwidth, height=\paperheight]{front-page-light} - }; - \end{tikzpicture} -\end{flushleft} - -\vspace*{3cm} - -\begin{adjustwidth}{8cm}{0pt} -\begin{flushleft} - \huge \textcolor{black}{\textbf{}{\raggedright{$PROJECT}}} -\end{flushleft} -\end{adjustwidth} - -\vfill - -\begin{adjustwidth}{8cm}{0pt} -\begin{tabularx}{0.5\textwidth}{ l l } - \textcolor{lightgray}{© 2024 Canonical Ltd.} & \hspace{3cm} \\ - \textcolor{lightgray}{All rights reserved.} & \hspace{3cm} \\ - & \hspace{3cm} \\ - & \hspace{3cm} \\ - -\end{tabularx} -\end{adjustwidth} - -\end{titlepage} -\RemoveFromHook{shipout/background} -\AddToHook{shipout/background}{ - \begin{tikzpicture}[remember picture,overlay] - \node[anchor=south west, align=left, inner sep=0] at (current page.south west) { - \includegraphics[width=\paperwidth]{normal-page-footer} - }; - \end{tikzpicture} - \begin{tikzpicture}[remember picture,overlay] - \node[anchor=north east, opacity=0.5, inner sep=35] at (current page.north east) { - \includegraphics[width=4cm]{Canonical-logo-4x} - }; - \end{tikzpicture} - } -''', -} \ No newline at end of file diff --git a/docs/tools/.sphinx/pa11y.json b/docs/tools/.sphinx/pa11y.json deleted file mode 100644 index 8df0cb9cb..000000000 --- a/docs/tools/.sphinx/pa11y.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "chromeLaunchConfig": { - "args": [ - "--no-sandbox" - ] - }, - "reporter": "cli", - "standard": "WCAG2AA" -} \ No newline at end of file diff --git a/docs/tools/.sphinx/package-lock.json b/docs/tools/.sphinx/package-lock.json deleted file mode 100644 index 4024d6edf..000000000 --- a/docs/tools/.sphinx/package-lock.json +++ /dev/null @@ -1,1523 +0,0 @@ -{ - "name": ".sphinx", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "pa11y": "^8.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@puppeteer/browsers": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.3.tgz", - "integrity": "sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ==", - "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.4.0", - "semver": "7.6.0", - "tar-fs": "3.0.5", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@puppeteer/browsers/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" - }, - "node_modules/@types/node": { - "version": "20.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", - "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", - "optional": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/axe-core": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.4.tgz", - "integrity": "sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==", - "engines": { - "node": ">=4" - } - }, - "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" - }, - "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", - "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" - } - }, - "node_modules/bare-os": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", - "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/bare-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", - "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", - "optional": true, - "dependencies": { - "streamx": "^2.18.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/bfj": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-8.0.0.tgz", - "integrity": "sha512-6KJe4gFrZ4lhmvWcUIj37yFAs36mi2FZXuTkw6udZ/QsX/znFypW4SatqcLA5K5T4BAWgJZD73UFEJJQxuJjoA==", - "dependencies": { - "bluebird": "^3.7.2", - "check-types": "^11.2.3", - "hoopy": "^0.1.4", - "jsonpath": "^1.1.1", - "tryer": "^1.0.1" - }, - "engines": { - "node": ">= 18.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-types": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==" - }, - "node_modules/chromium-bidi": { - "version": "0.5.23", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.23.tgz", - "integrity": "sha512-1o/gLU9wDqbN5nL2MtfjykjOuighGXc3/hnWueO1haiEoFgX8h5vbvcA4tgdQfjw1mkZ1OEF4x/+HVeqEX6NoA==", - "dependencies": { - "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/commander": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", - "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", - "engines": { - "node": ">=18" - } - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/degenerator/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1299070", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1299070.tgz", - "integrity": "sha512-+qtL3eX50qsJ7c+qVyagqi7AWMoQCBGNfoyJZMwm/NSXVqLYbuitrWEEIzxfUmTNy7//Xe8yhMmQ+elj3uAqSg==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", - "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", - "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", - "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/html_codesniffer": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/html_codesniffer/-/html_codesniffer-2.5.1.tgz", - "integrity": "sha512-vcz0yAaX/OaV6sdNHuT9alBOKkSxYb8h5Yq26dUqgi7XmCgGUSa7U9PiY1PBXQFMjKv1wVPs5/QzHlGuxPDUGg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/is": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", - "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", - "engines": { - "node": "*" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonpath": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", - "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", - "dependencies": { - "esprima": "1.2.2", - "static-eval": "2.0.2", - "underscore": "1.12.1" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", - "bin": { - "mustache": "bin/mustache" - } - }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/node.extend": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.3.tgz", - "integrity": "sha512-xwADg/okH48PvBmRZyoX8i8GJaKuJ1CqlqotlZOhUio8egD1P5trJupHKBzcPjSF9ifK2gPcEICRBnkfPqQXZw==", - "dependencies": { - "hasown": "^2.0.0", - "is": "^3.3.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pa11y": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pa11y/-/pa11y-8.0.0.tgz", - "integrity": "sha512-yMRsQT4Nc1peqpgx6kJiyK4fOPuVwXKMzIiBwqsKSlCmEm2JfESJskiGnBsdopG5xPAy18zs1wBhm7aghncNsg==", - "dependencies": { - "axe-core": "~4.8.4", - "bfj": "~8.0.0", - "commander": "~12.0.0", - "envinfo": "~7.11.1", - "html_codesniffer": "~2.5.1", - "kleur": "~4.1.5", - "mustache": "~4.2.0", - "node.extend": "~2.0.3", - "puppeteer": "^22.3.0", - "semver": "~7.6.0" - }, - "bin": { - "pa11y": "bin/pa11y.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/pac-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", - "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", - "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "pac-resolver": "^7.0.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/puppeteer": { - "version": "22.11.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.11.2.tgz", - "integrity": "sha512-8fjdQSgW0sq7471ftca24J7sXK+jXZ7OW7Gx+NEBFNyXrcTiBfukEI46gNq6hiMhbLEDT30NeylK/1ZoPdlKSA==", - "hasInstallScript": true, - "dependencies": { - "@puppeteer/browsers": "2.2.3", - "cosmiconfig": "9.0.0", - "devtools-protocol": "0.0.1299070", - "puppeteer-core": "22.11.2" - }, - "bin": { - "puppeteer": "lib/esm/puppeteer/node/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/puppeteer-core": { - "version": "22.11.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.11.2.tgz", - "integrity": "sha512-vQo+YDuePyvj+92Z9cdtxi/HalKf+k/R4tE80nGtQqJRNqU81eHaHkbVfnLszdaLlvwFF5tipnnSCzqWlEddtw==", - "dependencies": { - "@puppeteer/browsers": "2.2.3", - "chromium-bidi": "0.5.23", - "debug": "4.3.5", - "devtools-protocol": "0.0.1299070", - "ws": "8.17.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", - "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", - "dependencies": { - "agent-base": "^7.1.1", - "debug": "^4.3.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" - }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "dependencies": { - "escodegen": "^1.8.1" - } - }, - "node_modules/static-eval/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/static-eval/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/static-eval/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/streamx": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", - "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-decoder": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", - "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" - }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/underscore": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "optional": true - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/docs/tools/.sphinx/package.json b/docs/tools/.sphinx/package.json deleted file mode 100644 index d9d279490..000000000 --- a/docs/tools/.sphinx/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "pa11y": "^8.0.0" - } -} diff --git a/docs/tools/.sphinx/requirements.txt b/docs/tools/.sphinx/requirements.txt deleted file mode 100644 index 8d2d47b84..000000000 --- a/docs/tools/.sphinx/requirements.txt +++ /dev/null @@ -1,22 +0,0 @@ -# DO NOT MODIFY THIS FILE DIRECTLY! -# -# This file is generated automatically. -# Add custom requirements to the custom_required_modules -# array in the custom_conf.py file and run: -# make clean && make install -GitPython>=3.1.41 -canonical-sphinx-extensions -furo -linkify-it-py -myst-parser -pyspelling -sphinx -sphinx-autobuild -sphinx-copybutton -sphinx-design -sphinx-notfound-page -sphinx-tabs -sphinxcontrib-jquery -sphinxcontrib-svg2pdfconverter[CairoSVG] -sphinxext-opengraph -watchfiles diff --git a/docs/tools/.sphinx/spellingcheck.yaml b/docs/tools/.sphinx/spellingcheck.yaml deleted file mode 100644 index b907c5d67..000000000 --- a/docs/tools/.sphinx/spellingcheck.yaml +++ /dev/null @@ -1,28 +0,0 @@ -matrix: -- name: rST files - aspell: - lang: en - d: en_GB - dictionary: - wordlists: - - .wordlist.txt - - .custom_wordlist.txt - output: .sphinx/.wordlist.dic - sources: - - ../_build/**/*.html - pipeline: - - pyspelling.filters.html: - comments: false - attributes: - - title - - alt - ignores: - - code - - pre - - spellexception - - link - - div.relatedlinks - - strong.command - - div.visually-hidden - - img - - a.p-navigation__link diff --git a/docs/tools/.wokeignore b/docs/tools/.wokeignore deleted file mode 100644 index c64a60376..000000000 --- a/docs/tools/.wokeignore +++ /dev/null @@ -1,4 +0,0 @@ -# the cheat sheets contain a link to a repository with a block word which we -# cannot avoid for now, ie -# https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html -doc-cheat-sheet* diff --git a/docs/tools/.wordlist.txt b/docs/tools/.wordlist.txt deleted file mode 100644 index 64351d9e7..000000000 --- a/docs/tools/.wordlist.txt +++ /dev/null @@ -1,47 +0,0 @@ -addons -API -APIs -balancer -Charmhub -CLI -dropdown -Diátaxis -EBS -EKS -favicon -Furo -Git -GitHub -Grafana -IAM -installable -JSON -Juju -Kubernetes -Kubeflow -Launchpad -LTS -Makefile -Mattermost -MyST -namespace -namespaces -NodePort -observability -OEM -OLM -Permalink -pre -ReadMe -reST -reStructuredText -RTD -subdirectories -subtree -subfolders -Ubuntu -UI -UUID -VM -YAML -enablement diff --git a/docs/tools/Makefile b/docs/tools/Makefile deleted file mode 100644 index 72fe7c602..000000000 --- a/docs/tools/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# This Makefile stub allows you to customize starter pack (SP) targets. -# Consider this file as a bridge between your project -# and the starter pack's predefined targets that reside in Makefile.sp. -# -# You can add your own, non-SP targets here or override SP targets -# to fit your project's needs. For example, you can define and use targets -# named "install" or "run", but continue to use SP targets like "sp-install" -# or "sp-run" when working on the documentation. - -# Put it first so that "make" without argument is like "make help". -help: - @echo "\n" \ - "------------------------------------------------------------- \n" \ - "* watch, build and serve the documentation: make run \n" \ - "* only build: make html \n" \ - "* only serve: make serve \n" \ - "* clean built doc files: make clean-doc \n" \ - "* clean full environment: make clean \n" \ - "* check links: make linkcheck \n" \ - "* check spelling: make spelling \n" \ - "* check spelling (without building again): make spellcheck \n" \ - "* check inclusive language: make woke \n" \ - "* check accessibility: make pa11y \n" \ - "* check style guide compliance: make vale \n" \ - "* check style guide compliance on target: make vale TARGET=* \n" \ - "* check metrics for documentation: make allmetrics \n" \ - "* other possible targets: make \n" \ - "------------------------------------------------------------- \n" - -%: - $(MAKE) -f Makefile.sp sp-$@ diff --git a/docs/tools/Makefile.sp b/docs/tools/Makefile.sp deleted file mode 100644 index 0ad2c8b62..000000000 --- a/docs/tools/Makefile.sp +++ /dev/null @@ -1,156 +0,0 @@ -# Minimal makefile for Sphinx documentation -# -# `Makefile.sp` is from the Sphinx starter pack and should not be -# modified. -# Add your customisation to `Makefile` instead. - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXDIR = .sphinx -SPHINXOPTS ?= -c . -d $(SPHINXDIR)/.doctrees -j auto -SPHINXBUILD ?= sphinx-build -SOURCEDIR = ../src -METRICSDIR = $(SOURCEDIR)/metrics -BUILDDIR = ../_build -VENVDIR = $(SPHINXDIR)/venv -PA11Y = $(SPHINXDIR)/node_modules/pa11y/bin/pa11y.js --config $(SPHINXDIR)/pa11y.json -VENV = $(VENVDIR)/bin/activate -TARGET = * -ALLFILES = *.rst **/*.rst -ADDPREREQS ?= -REQPDFPACKS = latexmk fonts-freefont-otf texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended texlive-font-utils texlive-lang-cjk texlive-xetex plantuml xindy tex-gyre dvipng - -.PHONY: sp-full-help sp-woke-install sp-pa11y-install sp-install sp-run sp-html \ - sp-epub sp-serve sp-clean sp-clean-doc sp-spelling sp-spellcheck sp-linkcheck sp-woke \ - sp-allmetrics sp-pa11y sp-pdf-prep-force sp-pdf-prep sp-pdf Makefile.sp sp-vale sp-bash - -sp-full-help: $(VENVDIR) - @. $(VENV); $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - @echo "\n\033[1;31mNOTE: This help texts shows unsupported targets!\033[0m" - @echo "Run 'make help' to see supported targets." - -# Shouldn't assume that venv is available on Ubuntu by default; discussion here: -# https://bugs.launchpad.net/ubuntu/+source/python3.4/+bug/1290847 -$(SPHINXDIR)/requirements.txt: - @python3 -c "import venv" || \ - (echo "You must install python3-venv before you can build the documentation."; exit 1) - python3 -m venv $(VENVDIR) - @if [ ! -z "$(ADDPREREQS)" ]; then \ - . $(VENV); pip install \ - $(PIPOPTS) --require-virtualenv $(ADDPREREQS); \ - fi - . $(VENV); python3 $(SPHINXDIR)/build_requirements.py - -# If requirements are updated, venv should be rebuilt and timestamped. -$(VENVDIR): $(SPHINXDIR)/requirements.txt - @echo "... setting up virtualenv" - python3 -m venv $(VENVDIR) - . $(VENV); pip install $(PIPOPTS) --require-virtualenv \ - --upgrade -r $(SPHINXDIR)/requirements.txt \ - --log $(VENVDIR)/pip_install.log - @test ! -f $(VENVDIR)/pip_list.txt || \ - mv $(VENVDIR)/pip_list.txt $(VENVDIR)/pip_list.txt.bak - @. $(VENV); pip list --local --format=freeze > $(VENVDIR)/pip_list.txt - @touch $(VENVDIR) - -sp-woke-install: - @type woke >/dev/null 2>&1 || \ - { echo "Installing \"woke\" snap... \n"; sudo snap install woke; } - -sp-pa11y-install: - @type $(PA11Y) >/dev/null 2>&1 || { \ - echo "Installing \"pa11y\" from npm... \n"; \ - mkdir -p $(SPHINXDIR)/node_modules/ ; \ - npm install --prefix $(SPHINXDIR) pa11y; \ - } - -sp-install: $(VENVDIR) - -sp-run: sp-install - . $(VENV); sphinx-autobuild -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) - -# Doesn't depend on $(BUILDDIR) to rebuild properly at every run. -sp-html: sp-install - . $(VENV); $(SPHINXBUILD) -W --keep-going -b dirhtml "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) - -sp-epub: sp-install - . $(VENV); $(SPHINXBUILD) -b epub "$(SOURCEDIR)" "$(BUILDDIR)" -w $(SPHINXDIR)/warnings.txt $(SPHINXOPTS) - -sp-serve: sp-html - cd "$(BUILDDIR)"; python3 -m http.server --bind 127.0.0.1 8000 - -sp-clean: sp-clean-doc - @test ! -e "$(VENVDIR)" -o -d "$(VENVDIR)" -a "$(abspath $(VENVDIR))" != "$(VENVDIR)" - rm -rf $(VENVDIR) - rm -f $(SPHINXDIR)/requirements.txt - rm -rf $(SPHINXDIR)/node_modules/ - rm -rf $(SPHINXDIR)/styles - rm -rf $(SPHINXDIR)/vale.ini - -sp-clean-doc: - git clean -fx "$(BUILDDIR)" - rm -rf $(SPHINXDIR)/.doctrees - -sp-spellcheck: - . $(VENV) ; python3 -m pyspelling -c $(SPHINXDIR)/spellingcheck.yaml -j $(shell nproc) - -sp-spelling: sp-html sp-spellcheck - -sp-linkcheck: sp-install - . $(VENV) ; $(SPHINXBUILD) -b linkcheck "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) || { grep --color -F "[broken]" "$(BUILDDIR)/output.txt"; exit 1; } - exit 0 - -sp-woke: sp-woke-install - woke $(ALLFILES) --exit-1-on-failure \ - -c https://github.com/canonical/Inclusive-naming/raw/main/config.yml - -sp-pa11y: sp-pa11y-install sp-html - find $(BUILDDIR) -name *.html -print0 | xargs -n 1 -0 $(PA11Y) - -sp-vale: sp-install - @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale - @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py - @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; - @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt - @cat $(SOURCEDIR)/.wordlist.txt $(SOURCEDIR)/.custom_wordlist.txt >> $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt - @echo "" - @echo "Running Vale against $(TARGET). To change target set TARGET= with make command" - @echo "" - @. $(VENV); vale --config "$(SPHINXDIR)/vale.ini" --glob='*.{md,txt,rst}' $(TARGET) || true - @cat $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt > $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept.txt && rm $(SPHINXDIR)/styles/config/vocabularies/Canonical/accept_backup.txt - -sp-pdf-prep: sp-install - @for packageName in $(REQPDFPACKS); do (dpkg-query -W -f='$${Status}' $$packageName 2>/dev/null | \ - grep -c "ok installed" >/dev/null && echo "Package $$packageName is installed") && continue || \ - (echo "\nPDF generation requires the installation of the following packages: $(REQPDFPACKS)" && \ - echo "" && echo "Run sudo make pdf-prep-force to install these packages" && echo "" && echo \ - "Please be aware these packages will be installed to your system") && exit 1 ; done - -sp-pdf-prep-force: - apt-get update - apt-get upgrade -y - apt-get install --no-install-recommends -y $(REQPDFPACKS) \ - -sp-pdf: sp-pdf-prep - @. $(VENV); sphinx-build -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) - @rm ./$(BUILDDIR)/latex/front-page-light.pdf || true - @rm ./$(BUILDDIR)/latex/normal-page-footer.pdf || true - @find ./$(BUILDDIR)/latex -name "*.pdf" -exec mv -t ./$(BUILDDIR) {} + - @rm -r $(BUILDDIR)/latex - @echo "\nOutput can be found in ./$(BUILDDIR)\n" - -sp-allmetrics: sp-html - @echo "Recording documentation metrics..." - @echo "Checking for existence of vale..." - . $(VENV) - @. $(VENV); test -d $(SPHINXDIR)/venv/lib/python*/site-packages/vale || pip install vale - @. $(VENV); test -f $(SPHINXDIR)/vale.ini || python3 $(SPHINXDIR)/get_vale_conf.py - @. $(VENV); find $(SPHINXDIR)/venv/lib/python*/site-packages/vale/vale_bin -size 195c -exec vale --config "$(SPHINXDIR)/vale.ini" $(TARGET) > /dev/null \; - @eval '$(METRICSDIR)/scripts/source_metrics.sh $(PWD)' - @eval '$(METRICSDIR)/scripts/build_metrics.sh $(PWD) $(METRICSDIR)' - - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile.sp - . $(VENV); $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/tools/conf.py b/docs/tools/conf.py deleted file mode 100644 index bd99aa2d7..000000000 --- a/docs/tools/conf.py +++ /dev/null @@ -1,249 +0,0 @@ -import sys -import os -import requests -from urllib.parse import urlparse -from git import Repo, InvalidGitRepositoryError -import time -import ast -import yaml - -sys.path.append('./') -from custom_conf import * -sys.path.append('.sphinx/') -from build_requirements import * - -# Configuration file for the Sphinx documentation builder. -# You should not do any modifications to this file. Put your custom -# configuration into the custom_conf.py file. -# If you need to change this file, contribute the changes upstream. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -############################################################ -### Extensions -############################################################ - -extensions = [ - 'sphinx_design', - 'sphinx_copybutton', - 'sphinxcontrib.jquery', -] - -# Only add redirects extension if any redirects are specified. -if AreRedirectsDefined(): - extensions.append('sphinx_reredirects') - -# Only add myst extensions if any configuration is present. -if IsMyStParserUsed(): - extensions.append('myst_parser') - - # Additional MyST syntax - myst_enable_extensions = [ - 'substitution', - 'deflist', - 'linkify' - ] - myst_enable_extensions.extend(custom_myst_extensions) - -# Only add Open Graph extension if any configuration is present. -if IsOpenGraphConfigured(): - extensions.append('sphinxext.opengraph') - -extensions.extend(custom_extensions) -extensions = DeduplicateExtensions(extensions) - -### Configuration for extensions - -# Used for related links -if not 'discourse_prefix' in html_context and 'discourse' in html_context: - html_context['discourse_prefix'] = html_context['discourse'] + '/t/' - -# The URL prefix for the notfound extension depends on whether the documentation uses versions. -# For documentation on documentation.ubuntu.com, we also must add the slug. -url_version = '' -url_lang = '' - -# Determine if the URL uses versions and language -if 'READTHEDOCS_CANONICAL_URL' in os.environ and os.environ['READTHEDOCS_CANONICAL_URL']: - url_parts = os.environ['READTHEDOCS_CANONICAL_URL'].split('/') - - if len(url_parts) >= 2 and 'READTHEDOCS_VERSION' in os.environ and os.environ['READTHEDOCS_VERSION'] == url_parts[-2]: - url_version = url_parts[-2] + '/' - - if len(url_parts) >= 3 and 'READTHEDOCS_LANGUAGE' in os.environ and os.environ['READTHEDOCS_LANGUAGE'] == url_parts[-3]: - url_lang = url_parts[-3] + '/' - -# Set notfound_urls_prefix to the slug (if defined) and the version/language affix -if slug: - notfound_urls_prefix = '/' + slug + '/' + url_lang + url_version -elif len(url_lang + url_version) > 0: - notfound_urls_prefix = '/' + url_lang + url_version -else: - notfound_urls_prefix = '' - -notfound_context = { - 'title': 'Page not found', - 'body': '

Sorry, but the documentation page that you are looking for was not found.

\n\n

Documentation changes over time, and pages are moved around. We try to redirect you to the updated content where possible, but unfortunately, that didn\'t work this time (maybe because the content you were looking for does not exist in this version of the documentation).

\n

You can try to use the navigation to locate the content you\'re looking for, or search for a similar page.

\n', -} - -# Default image for OGP (to prevent font errors, see -# https://github.com/canonical/sphinx-docs-starter-pack/pull/54 ) -if not 'ogp_image' in locals(): - ogp_image = 'https://assets.ubuntu.com/v1/253da317-image-document-ubuntudocs.svg' - -############################################################ -### General configuration -############################################################ - -exclude_patterns = [ - '_build', - 'Thumbs.db', - '.DS_Store', - '.sphinx', - '_parts' -] -exclude_patterns.extend(custom_excludes) - -rst_epilog = ''' -.. include:: /reuse/links.txt -''' -if 'custom_rst_epilog' in locals(): - rst_epilog = custom_rst_epilog - -source_suffix = { - '.rst': 'restructuredtext', - '.md': 'markdown', -} - -if not 'conf_py_path' in html_context and 'github_folder' in html_context: - html_context['conf_py_path'] = html_context['github_folder'] - -# For ignoring specific links -linkcheck_anchors_ignore_for_url = [ - r'https://github\.com/.*' -] -linkcheck_anchors_ignore_for_url.extend(custom_linkcheck_anchors_ignore_for_url) - -# Tags cannot be added directly in custom_conf.py, so add them here -for tag in custom_tags: - tags.add(tag) - -# html_context['get_contribs'] is a function and cannot be -# cached (see https://github.com/sphinx-doc/sphinx/issues/12300) -suppress_warnings = ["config.cache"] - -############################################################ -### Styling -############################################################ - -# Find the current builder -builder = 'dirhtml' -if '-b' in sys.argv: - builder = sys.argv[sys.argv.index('-b')+1] - -# Setting templates_path for epub makes the build fail -if builder == 'dirhtml' or builder == 'html': - templates_path = ['.sphinx/_templates'] - notfound_template = '404.html' - -# Theme configuration -html_theme = 'furo' -html_last_updated_fmt = '' -html_permalinks_icon = '¶' - -if html_title == '': - html_theme_options = { - 'sidebar_hide_name': True - } - -############################################################ -### Additional files -############################################################ - -html_static_path = ['.sphinx/_static'] - -html_css_files = [ - 'custom.css', - 'header.css', - 'github_issue_links.css', - 'furo_colors.css', - 'footer.css' -] -html_css_files.extend(custom_html_css_files) - -html_js_files = ['header-nav.js', 'footer.js'] -if 'github_issues' in html_context and html_context['github_issues'] and not disable_feedback_button: - html_js_files.append('github_issue_links.js') -html_js_files.extend(custom_html_js_files) - -############################################################# -# Display the contributors - -def get_contributors_for_file(github_url, github_folder, pagename, page_source_suffix, display_contributors_since=None): - filename = f"{pagename}{page_source_suffix}" - paths=html_context['github_folder'][1:] + filename - - try: - repo = Repo(".") - except InvalidGitRepositoryError: - cwd = os.getcwd() - ghfolder = html_context['github_folder'][:-1] - if ghfolder and cwd.endswith(ghfolder): - repo = Repo(cwd.rpartition(ghfolder)[0]) - else: - print("The local Git repository could not be found.") - return - - since = display_contributors_since if display_contributors_since and display_contributors_since.strip() else None - - commits = repo.iter_commits(paths=paths, since=since) - - contributors_dict = {} - for commit in commits: - contributor = commit.author.name - if contributor not in contributors_dict or commit.committed_date > contributors_dict[contributor]['date']: - contributors_dict[contributor] = { - 'date': commit.committed_date, - 'sha': commit.hexsha - } - # The github_page contains the link to the contributor's latest commit. - contributors_list = [{'name': name, 'github_page': f"{github_url}/commit/{data['sha']}"} for name, data in contributors_dict.items()] - sorted_contributors_list = sorted(contributors_list, key=lambda x: x['name']) - return sorted_contributors_list - -html_context['get_contribs'] = get_contributors_for_file - -############################################################ -### Myst configuration -############################################################ -if os.path.exists('./reuse/substitutions.yaml'): - with open('./reuse/substitutions.yaml', 'r') as fd: - myst_substitutions = yaml.safe_load(fd.read()) - - - -############################################################ -### PDF configuration -############################################################ - -latex_additional_files = [ - "./.sphinx/fonts/Ubuntu-B.ttf", - "./.sphinx/fonts/Ubuntu-R.ttf", - "./.sphinx/fonts/Ubuntu-RI.ttf", - "./.sphinx/fonts/UbuntuMono-R.ttf", - "./.sphinx/fonts/UbuntuMono-RI.ttf", - "./.sphinx/fonts/UbuntuMono-B.ttf", - "./.sphinx/images/Canonical-logo-4x.png", - "./.sphinx/images/front-page-light.pdf", - "./.sphinx/images/normal-page-footer.pdf", -] - -latex_engine = 'xelatex' -latex_show_pagerefs = True -latex_show_urls = 'footnote' - -with open(".sphinx/latex_elements_template.txt", "rt") as file: - latex_config = file.read() - -latex_elements = ast.literal_eval(latex_config.replace("$PROJECT", project)) \ No newline at end of file diff --git a/docs/tools/conf.py-old b/docs/tools/conf.py-old deleted file mode 100644 index f4346485e..000000000 --- a/docs/tools/conf.py-old +++ /dev/null @@ -1,150 +0,0 @@ -import sys -import os -import yaml - -sys.path.append('./') -from custom_conf import * - -# Configuration file for the Sphinx documentation builder. -# You should not do any modifications to this file. Put your custom -# configuration into the custom_conf.py file. -# If you need to change this file, contribute the changes upstream. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -############################################################ -### Extensions -############################################################ - -extensions = [ - 'sphinx_design', - 'sphinx_tabs.tabs', - 'sphinx_reredirects', - 'canonical.youtube-links', - 'canonical.related-links', - 'canonical.custom-rst-roles', - 'canonical.terminal-output', - 'sphinx_copybutton', - 'sphinxext.opengraph', - 'myst_parser', - 'sphinxcontrib.jquery', - 'notfound.extension' -] -extensions.extend(custom_extensions) - -### Configuration for extensions - -# Additional MyST syntax -myst_enable_extensions = [ - 'substitution', - 'deflist', - 'linkify' -] -myst_enable_extensions.extend(custom_myst_extensions) - -# Used for related links -if not 'discourse_prefix' in html_context and 'discourse' in html_context: - html_context['discourse_prefix'] = html_context['discourse'] + '/t/' - -# The default for notfound_urls_prefix usually works, but not for -# documentation on documentation.ubuntu.com -if slug: - notfound_urls_prefix = '/' + slug + '/en/latest/' - -notfound_context = { - 'title': 'Page not found', - 'body': '

Page not found

\n\n

Sorry, but the documentation page that you are looking for was not found.

\n

Documentation changes over time, and pages are moved around. We try to redirect you to the updated content where possible, but unfortunately, that didn\'t work this time (maybe because the content you were looking for does not exist in this version of the documentation).

\n

You can try to use the navigation to locate the content you\'re looking for, or search for a similar page.

\n', -} - -# Default image for OGP (to prevent font errors, see -# https://github.com/canonical/sphinx-docs-starter-pack/pull/54 ) -if not 'ogp_image' in locals(): - ogp_image = 'https://assets.ubuntu.com/v1/253da317-image-document-ubuntudocs.svg' - -############################################################ -### General configuration -############################################################ - -exclude_patterns = [ - '_build', - 'Thumbs.db', - '.DS_Store', - '.sphinx', - '_parts' -] -exclude_patterns.extend(custom_excludes) - -rst_epilog = ''' -.. include:: /reuse/links.txt -''' -if 'custom_rst_epilog' in locals(): - rst_epilog = custom_rst_epilog - -source_suffix = { - '.rst': 'restructuredtext', - '.md': 'markdown', -} - -if not 'conf_py_path' in html_context and 'github_folder' in html_context: - html_context['conf_py_path'] = html_context['github_folder'] - -# For ignoring specific links -linkcheck_anchors_ignore_for_url = [ - r'https://github\.com/.*' -] -linkcheck_anchors_ignore_for_url.extend(custom_linkcheck_anchors_ignore_for_url) - -# Tags cannot be added directly in custom_conf.py, so add them here -for tag in custom_tags: - tags.add(tag) - -############################################################ -### Styling -############################################################ - -# Find the current builder -builder = 'dirhtml' -if '-b' in sys.argv: - builder = sys.argv[sys.argv.index('-b')+1] - -# Setting templates_path for epub makes the build fail -if builder == 'dirhtml' or builder == 'html': - templates_path = ['.sphinx/_templates'] - -# Theme configuration -html_theme = 'furo' -html_last_updated_fmt = '' -html_permalinks_icon = '¶' - -if html_title == '': - html_theme_options = { - 'sidebar_hide_name': True - } - -############################################################ -### Additional files -############################################################ - -html_static_path = ['.sphinx/_static'] - -html_css_files = [ - 'custom.css', - 'header.css', - 'github_issue_links.css', - 'furo_colors.css' -] -html_css_files.extend(custom_html_css_files) - -html_js_files = ['header-nav.js'] -if 'github_issues' in html_context and html_context['github_issues'] and not disable_feedback_button: - html_js_files.append('github_issue_links.js') -html_js_files.extend(custom_html_js_files) - - -############################################################ -### Myst configuration -############################################################ -if os.path.exists('./reuse/substitutions.yaml'): - with open('./reuse/substitutions.yaml', 'r') as fd: - myst_substitutions = yaml.safe_load(fd.read()) diff --git a/docs/tools/custom_conf.py b/docs/tools/custom_conf.py deleted file mode 100644 index aa876861c..000000000 --- a/docs/tools/custom_conf.py +++ /dev/null @@ -1,220 +0,0 @@ -import datetime - -# Custom configuration for the Sphinx documentation builder. -# All configuration specific to your project should be done in this file. -# -# The file is included in the common conf.py configuration file. -# You can modify any of the settings below or add any configuration that -# is not covered by the common conf.py file. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html -# -# If you're not familiar with Sphinx and don't want to use advanced -# features, it is sufficient to update the settings in the "Project -# information" section. - -############################################################ -### Project information -############################################################ - -# Product name -project = 'Canonical Kubernetes' -author = 'Canonical Group Ltd' - -# The title you want to display for the documentation in the sidebar. -# You might want to include a version number here. -# To not display any title, set this option to an empty string. -html_title = 'Canonical K8s' - -# The default value uses the current year as the copyright year. -# -# For static works, it is common to provide the year of first publication. -# Another option is to give the first year and the current year -# for documentation that is often changed, e.g. 2022–2023 (note the en-dash). -# -# A way to check a GitHub repo's creation date is to obtain a classic GitHub -# token with 'repo' permissions here: https://github.com/settings/tokens -# Next, use 'curl' and 'jq' to extract the date from the GitHub API's output: -# -# curl -H 'Authorization: token ' \ -# -H 'Accept: application/vnd.github.v3.raw' \ -# https://api.github.com/repos/canonical/ | jq '.created_at' - -copyright = '%s CC-BY-SA, %s' % (datetime.date.today().year, author) - -## Open Graph configuration - defines what is displayed as a link preview -## when linking to the documentation from another website (see https://ogp.me/) -# The URL where the documentation will be hosted (leave empty if you -# don't know yet) -ogp_site_url = 'https://documentation.ubuntu.com/canonical-kubernetes' -# The documentation website name (usually the same as the product name) -ogp_site_name = project -# The URL of an image or logo that is used in the preview -ogp_image = 'https://assets.ubuntu.com/v1/253da317-image-document-ubuntudocs.svg' - -# Update with the local path to the favicon for your product -# (default is the circle of friends) -html_favicon = '.sphinx/_static/favicon.png' - -# (Some settings must be part of the html_context dictionary, while others -# are on root level. Don't move the settings.) -html_context = { - - # Change to the link to the website of your product (without "https://") - # For example: "ubuntu.com/lxd" or "microcloud.is" - # If there is no product website, edit the header template to remove the - # link (see the readme for instructions). - 'product_page': 'ubuntu.com/kubernetes', - - # Add your product tag (the orange part of your logo, will be used in the - # header) to ".sphinx/_static" and change the path here (start with "_static") - # (default is the circle of friends) - 'product_tag': '_static/tag.png', - - # Change to the discourse instance you want to be able to link to - # using the :discourse: metadata at the top of a file - # (use an empty value if you don't want to link) - 'discourse': ' https://discourse.ubuntu.com/c/kubernetes/180', - - # Change to the Mattermost channel you want to link to - # (use an empty value if you don't want to link) - 'matrix': 'https://matrix.to/#/#k8s:ubuntu.com', - - # Change to the GitHub URL for your project - 'github_url': 'https://github.com/canonical/k8s-snap', - - # Change to the branch for this version of the documentation - 'github_version': 'main', - - # Change to the folder that contains the documentation - # (usually "/" or "/docs/") - 'github_folder': '/docs/src/', - - # Change to an empty value if your GitHub repo doesn't have issues enabled. - # This will disable the feedback button and the issue link in the footer. - 'github_issues': 'enabled', - - # Controls the existence of Previous / Next buttons at the bottom of pages - # Valid options: none, prev, next, both - # You can override the default setting on a page-by-page basis by specifying - # it as file-wide metadata at the top of the file, see - # https://www.sphinx-doc.org/en/master/usage/restructuredtext/field-lists.html - 'sequential_nav': "none", - # Controls if to display the contributors of a file or not - "display_contributors": True, - - # Controls time frame for showing the contributors - "display_contributors_since": "" -} - -# If your project is on documentation.ubuntu.com, specify the project -# slug (for example, "lxd") here. -slug = "canonical-kubernetes" - -############################################################ -### Redirects -############################################################ - -# Set up redirects (https://documatt.gitlab.io/sphinx-reredirects/usage.html) -# For example: 'explanation/old-name.html': '../how-to/prettify.html', - -redirects = {} - -############################################################ -### Link checker exceptions -############################################################ - -# Links to ignore when checking links - -linkcheck_ignore = [ - 'http://127.0.0.1:8000' - ] - -# Pages on which to ignore anchors -# (This list will be appended to linkcheck_anchors_ignore_for_url) - -custom_linkcheck_anchors_ignore_for_url = [ - ] - -############################################################ -### Additions to default configuration -############################################################ - -## The following settings are appended to the default configuration. -## Use them to extend the default features. - -# Add extensions -custom_extensions = [ ] - -# Add MyST extensions -custom_myst_extensions = [] -# Add custom Sphinx extensions as needed. -# This array contains recommended extensions that should be used. -# NOTE: The following extensions are handled automatically and do -# not need to be added here: myst_parser, sphinx_copybutton, sphinx_design, -# sphinx_reredirects, sphinxcontrib.jquery, sphinxext.opengraph -custom_extensions = [ - 'sphinx_tabs.tabs', - 'canonical.youtube-links', - 'canonical.related-links', - 'canonical.custom-rst-roles', - 'canonical.terminal-output', - 'notfound.extension', - 'sphinxcontrib.cairosvgconverter', - ] - -# Add custom required Python modules that must be added to the -# .sphinx/requirements.txt file. -# NOTE: The following modules are handled automatically and do not need to be -# added here: canonical-sphinx-extensions, furo, linkify-it-py, myst-parser, -# pyspelling, sphinx, sphinx-autobuild, sphinx-copybutton, sphinx-design, -# sphinx-notfound-page, sphinx-reredirects, sphinx-tabs, sphinxcontrib-jquery, -# sphinxext-opengraph -custom_required_modules = [ - 'sphinxcontrib-svg2pdfconverter[CairoSVG]' -] -# Add files or directories that should be excluded from processing. -custom_excludes = [ - 'doc-cheat-sheet*', -] - -# Add CSS files (located in .sphinx/_static/) -custom_html_css_files = [] - -# Add JavaScript files (located in .sphinx/_static/) -custom_html_js_files = [] - -## The following settings override the default configuration. - -# Specify a reST string that is included at the end of each file. -# If commented out, use the default (which pulls the reuse/links.txt -# file into each reST file). -# custom_rst_epilog = '' - -# By default, the documentation includes a feedback button at the top. -# You can disable it by setting the following configuration to True. -disable_feedback_button = False - -# Add tags that you want to use for conditional inclusion of text -# (https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#tags) -custom_tags = [] - -############################################################ -### Additional configuration -############################################################ - -## Add any configuration that is not covered by the common conf.py file. - - -# Change the default code highlighting to 'none' - -highlight_language = 'none' - -# Define a :center: role that can be used to center the content of table cells. -rst_prolog = ''' -.. role:: center - :class: align-center -.. role:: h2 - :class: hclass2 -''' diff --git a/docs/tools/make.bat b/docs/tools/make.bat deleted file mode 100644 index 32bb24529..000000000 --- a/docs/tools/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=. -set BUILDDIR=_build - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.https://www.sphinx-doc.org/ - exit /b 1 -) - -if "%1" == "" goto help - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% - -:end -popd diff --git a/docs/tools/metrics/scripts/build_metrics.sh b/docs/tools/metrics/scripts/build_metrics.sh deleted file mode 100755 index b7140a1a9..000000000 --- a/docs/tools/metrics/scripts/build_metrics.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -links=0 -images=0 - -# count number of links -links=$(find . -type d -path './.sphinx' -prune -o -name '*.html' -exec cat {} + | grep -o "