2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#!/bin/sh
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# The source of this file is https://raw.githubusercontent.com/grafana/writers-toolkit/main/docs/make-docs.
							 
						 
					
						
							
								
									
										
										
										
											2023-07-18 16:52:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# # `make-docs` procedure changelog
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Updates should conform to the guidelines in https://keepachangelog.com/en/1.1.0/.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# [Semantic versioning](https://semver.org/) is used to help the reader identify the significance of changes.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Changes are relevant to this script and the support docs.mk GNU Make interface.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-18 17:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ## 4.2.1 (2023-09-13)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Improved consistency of the webserver request loop by polling the Hugo port rather than the proxy port.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ## 4.2.0 (2023-09-01)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Retry the initial webserver request up to ten times to allow for the process to start.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   If it is still failing after ten seconds, an error message is logged.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-24 16:19:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ## 4.1.1 (2023-07-20)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Replaced use of `realpath` with POSIX compatible alternative to determine default value for REPOS_PATH.
							 
						 
					
						
							
								
									
										
										
										
											2023-07-18 16:52:11 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 4.1.0 (2023-06-16)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Mounts of `layouts` and `config` directories for the `website` project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   Ensures that local changes to mounts or shortcodes are reflected in the development server.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Version inference for versioned docs pages.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   Pages in versioned projects now have the `versioned: true` front matter set to ensure that "version" in $.Page.Scratch is set on builds.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 4.0.0 (2023-06-06)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Removed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - `doc-validator/%` target.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   The behavior of the target was not as described.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   Instead, to limit `doc-validator` to only specific files, refer to https://grafana.com/docs/writers-toolkit/writing-guide/tooling-and-workflows/validate-technical-documentation/#run-on-specific-files.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 3.0.0 (2023-05-18)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Compatibility with the updated Make targets in the `website` repository.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   `docs` now runs this script itself, `server-docs` builds the site with the `docs` Hugo environment.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 2.0.0 (2023-05-18)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Support for the grafana-cloud/frontend-observability/faro-web-sdk project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Use of `doc-validator` v2.0.x which includes breaking changes to command line options.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Source grafana-cloud project from website repository.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Support for running the Vale linter with `make vale`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 1.2.1 (2023-05-05)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Use `latest` tag of `grafana/vale` image by default instead of hardcoded older version.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Fix mounting multiple projects broken by the changes in 1.0.1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 1.2.0 (2023-05-05)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Support for running the Vale linter with `make vale`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 1.1.0 (2023-05-05)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Rewrite error output so it can be followed by text editors.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Fix `docs-debug` container process port.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 1.0.1 (2023-05-04)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Fixed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Ensure complete section hierarchy so that all projects have a visible menu.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ## 1.0.0 (2023-05-04)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ### Added
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Build multiple projects simultaneously if all projects are checked out locally.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Run [`doc-validator`](https://github.com/grafana/technical-documentation/tree/main/tools/cmd/doc-validator) over projects.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Redirect project root to mounted version.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   For example redirect `/docs/grafana/` to `/docs/grafana/latest/`.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Support for Podman or Docker containers with `PODMAN` environment variable.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - Support for projects:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - agent
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - enterprise-logs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - enterprise-metrics
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - enterprise-traces
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - grafana
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - grafana-cloud
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - grafana-cloud/machine-learning
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - helm-charts/mimir-distributed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - helm-charts/tempo-distributed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - incident
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - loki
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - mimir
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - oncall
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - opentelemetry
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - phlare
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - plugins
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - slo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - tempo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   - writers-toolkit
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								set -ef
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly DOCS_CONTAINER="${DOCS_CONTAINER:-make-docs}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly DOCS_HOST_PORT="${DOCS_HOST_PORT:-3002}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly DOCS_IMAGE="${DOCS_IMAGE:-grafana/docs-base:latest}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly DOC_VALIDATOR_INCLUDE="${DOC_VALIDATOR_INCLUDE:-.+\.md$}"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								readonly DOC_VALIDATOR_SKIP_CHECKS="${DOC_VALIDATOR_SKIP_CHECKS:-^image-}"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly HUGO_REFLINKSERRORLEVEL="${HUGO_REFLINKSERRORLEVEL:-WARNING}"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								readonly VALE_MINALERTLEVEL="${VALE_MINALERTLEVEL:-error}"
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								readonly WEBSITE_EXEC="${WEBSITE_EXEC:-make server-docs}"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# If set, the docs-base image will run a prebuild script that sets up Hugo mounts.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								readonly WEBSITE_MOUNTS="${WEBSITE_MOUNTS:-}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PODMAN="$(if command -v podman >/dev/null 2>&1; then echo podman; else echo docker; fi)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ! command -v curl >/dev/null 2>&1; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if ! command -v wget >/dev/null 2>&1; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    errr 'either `curl` or `wget` must be installed for this script to work.'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if ! command -v "${PODMAN}" >/dev/null 2>&1; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  errr 'either `podman` or `docker` must be installed for this script to work.'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								about() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cat <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Test documentation locally with multiple source repositories.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								The REPOS_PATH environment variable is a colon (:) separated list of paths in which to look for project repositories.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								usage() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cat <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Usage:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  REPOS_PATH=<PATH[:<PATH>...]> $0 [<PROJECT>[:<VERSION>[:<REPO>[:<DIR>]]]...]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Examples:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  REPOS_PATH=~/ext/grafana/ $0 writers-toolkit tempo:latest helm-charts/mimir-distributed:latest:mimir:docs/sources/mimir-distributed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if [ $# -lt 1 ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cat <<EOF >&2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ERRR: arguments required but not supplied.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$(about)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$(usage)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-24 16:19:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								readonly REPOS_PATH="${REPOS_PATH:-$(cd "$(git rev-parse --show-toplevel)/.." && echo "${PWD}")}"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if [ -z "${REPOS_PATH}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  cat <<EOF >&2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ERRR: REPOS_PATH environment variable is required but has not been provided.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$(usage)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_as_code='as-code-docs'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_enterprise_metrics='backend-enterprise'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_enterprise_metrics_='backend-enterprise'
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SOURCES_grafana_cloud='website'
							 
						 
					
						
							
								
									
										
										
										
											2023-07-14 01:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SOURCES_grafana_cloud_alerting_and_irm_machine_learning='machine-learning'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_grafana_cloud_alerting_and_irm_slo='slo'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SOURCES_grafana_cloud_k6='k6-docs'
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SOURCES_grafana_cloud_data_configuration_integrations='cloud-onboarding'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_grafana_cloud_frontend_observability_faro_web_sdk='faro-web-sdk'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								SOURCES_helm_charts_mimir_distributed='mimir'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_helm_charts_tempo_distributed='tempo'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SOURCES_opentelemetry='opentelemetry-docs'
							 
						 
					
						
							
								
									
										
										
										
											2023-07-14 01:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								SOURCES_plugins_grafana_splunk_datasource='splunk-datasource'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VERSIONS_as_code='UNVERSIONED'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-07-14 01:24:23 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud_alerting_and_irm_machine_learning='UNVERSIONED'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud_alerting_and_irm_slo='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud_k6='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud_data_configuration_integrations='UNVERSIONED'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VERSIONS_grafana_cloud_frontend_observability_faro_web_sdk='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VERSIONS_opentelemetry='UNVERSIONED'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								VERSIONS_technical_documentation='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								VERSIONS_website='UNVERSIONED'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								VERSIONS_writers_toolkit='UNVERSIONED'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PATHS_grafana_cloud='content/docs/grafana-cloud'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								PATHS_helm_charts_mimir_distributed='docs/sources/helm-charts/mimir-distributed'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PATHS_helm_charts_tempo_distributed='docs/sources/helm-charts/tempo-distributed'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PATHS_mimir='docs/sources/mimir'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PATHS_tempo='docs/sources/tempo'
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								PATHS_website='content/docs'
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# identifier STR
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Replace characters that are not valid in an identifier with underscores.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								identifier() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "$1" | tr -C '[:alnum:]_\n' '_'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# aget ARRAY KEY
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Get the value of KEY from associative array ARRAY.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Characters that are not valid in an identifier are replaced with underscores.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								aget() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  eval echo '$'"$(identifier "$1")_$(identifier "$2")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# new_proj populates a new project structure.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								new_proj() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _project="$1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _version="$2"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _repo="$3"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _path="$4"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # If version is not set, use the script mapping of project to default versions if it exists.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Fallback to 'latest'.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_version}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ -z "$(aget VERSIONS "${_project}")" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _version=latest
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _version="$(aget VERSIONS "${_project}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # If repo is not set, use the script mapping of project to repo name if it exists.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Fallback to using the project name.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_repo}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ -z "$(aget SOURCES "${_project}")" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _repo="${_project}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _repo="$(aget SOURCES "${_project}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # If path is not set, use the script mapping of project to docs sources path if it exists.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Fallback to using 'docs/sources'.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_path}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ -z "$(aget PATHS "${_project}")" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _path="docs/sources"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      _path="$(aget PATHS "${_project}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "${_project}:${_version}:${_repo}:${_path}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _project _version _repo _path
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# proj_url returns the webserver URL for a project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It expects a complete project structure as input.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_url() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if [ "${_project}" = 'website' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "http://localhost:${DOCS_HOST_PORT}/docs/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "http://localhost:${DOCS_HOST_PORT}/docs/${_project}/${_version}/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# proj_ver returns the version for a project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It expects a complete project structure as input.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_ver() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _ _ver _ _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "${_ver}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _ver
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# proj_dst returns the container path to content source for a project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It expects a complete project structure as input.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_dst() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if [ "${_project}" = 'website' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo '/hugo/content/docs'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "/hugo/content/docs/${_project}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "/hugo/content/docs/${_project}/${_version}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# repo_path returns the host path to the project repository.
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								repo_path() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _repo="$1"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  IFS=:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for lookup in ${REPOS_PATH}; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ -d "${lookup}/${_repo}" ]; then
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      echo "${lookup}/${_repo}"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      unset _path _repo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset IFS
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  errr "could not find project '${_repo}' in any of the paths in REPOS_PATH '${REPOS_PATH}'."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  note "you must have a checkout of the project '${_repo}' at '${REPOS_PATH##:*}/${_repo}'."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  note "if you have cloned the repository into a directory with a different name, consider changing it to ${_repo}."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  unset _repo
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# proj_src returns the host path to content source for a project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It expects a complete project structure as input.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It looks for the provided repository name in each of the paths specified in the REPOS_PATH environment variable.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_src() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _ _ _repo _path <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _repo="$(repo_path "${_repo}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "${_repo}/${_path}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _path _repo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# proj_canonical returns the canonical absolute path partial URI for a project.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# It expects a complete project structure as input.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_canonical() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _project _version _ _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if [ "${_project}" = 'website' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo '/docs'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if [ -z "${_version}" ] || [ "${_version}" = 'UNVERSIONED' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "/docs/${_project}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "/docs/${_project}/${_version}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  unset _project _version
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								proj_to_url_src_dst_ver() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _url="$(proj_url "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _src="$(proj_src "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _dst="$(proj_dst "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  _ver="$(proj_ver "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "${_url}^${_src}^${_dst}^${_ver}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _url _src _dst _ver
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								url_src_dst_vers() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for arg in "$@"; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IFS=: read -r _project _version _repo _path <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$arg
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    case "${_project}" in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Workaround for arbitrary mounts where the version field is expected to be the local directory
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # and the repo field is expected to be the container directory.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      arbitrary)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo "${_project}^${_version}^${_repo}^" # TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      logs)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj loki "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj enterprise-logs "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      metrics)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj mimir "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj helm-charts/mimir-distributed "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj enterprise-metrics "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      traces)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj tempo "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj enterprise-traces "${_version}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      *)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        proj_to_url_src_dst_ver "$(new_proj "${_project}" "${_version}" "${_repo}" "${_path}")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    esac
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _project _version _repo _path
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								await_build() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  url="$1"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  req="$(if command -v curl >/dev/null 2>&1; then echo 'curl -s -o /dev/null'; else echo 'wget -q'; fi)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  i=1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  max=10
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while [ "${i}" -ne "${max}" ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    sleep 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    debg "Retrying request to webserver assuming the process is still starting up."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    i=$((i + 1))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ${req} "${url}"; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo "View documentation locally:"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for x in ${url_src_dst_vers}; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        IFS='^' read -r url _ _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								$x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if [ -n "${url}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if [ "${_url}" != "arbitrary" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            echo "  ${url}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fi
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fi
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo
							 
						 
					
						
							
								
									
										
										
										
											2023-09-18 17:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      echo 'Press Ctrl+c to stop the server'
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unset i max req url
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  errr 'The build was interrupted or a build error occurred, check the previous logs for possible causes.'
							 
						 
					
						
							
								
									
										
										
										
											2023-09-18 17:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  note 'You might need to use Ctrl+c to end the process.'
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-04 20:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  unset i max req url
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								debg() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ -n "${DEBUG}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo "DEBG: $1" >&2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								errr() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "ERRR: $1" >&2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								note() {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo "NOTE: $1" >&2
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								url_src_dst_vers="$(url_src_dst_vers "$@")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								volumes=""
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								redirects=""
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								for arg in "$@"; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS=: read -r _project _ _repo _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								${arg}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ "${_project}" = website ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _repo="$(repo_path website)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    volumes="--volume=${_repo}/config:/hugo/config"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    volumes="${volumes} --volume=${_repo}/layouts/partials:/hugo/layouts/partials"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    volumes="${volumes} --volume=${_repo}/layouts/shortcodes:/hugo/layouts/shortcodes"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _project _repo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								for x in ${url_src_dst_vers}; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS='^' read -r _url _src _dst _ver <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ "${_url}" != "arbitrary" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ ! -f "${_src}/_index.md" ]; then
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      errr "Index file '${_src}/_index.md' does not exist."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      note "Is '${_src}' the correct source directory?"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      exit 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  debg "DEBG: Mounting '${_src}' at container path '${_dst}'"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if [ -z "${volumes}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    volumes="--volume=${_src}:${_dst}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    volumes="${volumes} --volume=${_src}:${_dst}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if [ -n "${_ver}" ] && [ "${_ver}" != 'UNVERSIONED' ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if [ -z "${redirects}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      redirects="${_dst}^${_ver}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      redirects="${redirects} ${_dst}^${_ver}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset _url _src _dst _ver
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								IFS=':' read -r image _ <<POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								${DOCS_IMAGE}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								POSIX_HERESTRING
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								case "${image}" in
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  'grafana/doc-validator')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proj="$(new_proj "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "${PODMAN}" run \
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                --init \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --interactive \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --name "${DOCS_CONTAINER}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --platform linux/amd64 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --rm \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --tty \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ${volumes} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "${DOCS_IMAGE}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "--include=${DOC_VALIDATOR_INCLUDE}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "--skip-checks=${DOC_VALIDATOR_SKIP_CHECKS}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                /hugo/content/docs \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "$(proj_canonical "${proj}")" | sed "s#$(proj_dst "${proj}")#sources#"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  'grafana/vale')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proj="$(new_proj "$1")"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "${PODMAN}" run \
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                --init \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --interactive \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --name "${DOCS_CONTAINER}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --platform linux/amd64 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --rm \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --tty \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ${volumes} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "${DOCS_IMAGE}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "--minAlertLevel=${VALE_MINALERTLEVEL}" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --config=/etc/vale/.vale.ini \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                --output=line \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                /hugo/content/docs | sed "s#$(proj_dst "${proj}")#sources#"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  *)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tempfile="$(mktemp -t make-docs.XXX)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    cat <<EOF >"${tempfile}"
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#!/usr/bin/env bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								for redirect in ${redirects}; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS='^' read -r path ver <<<"\${redirect}"
							 
						 
					
						
							
								
									
										
										
										
											2023-06-17 01:45:44 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo -e "---\\nredirectURL: \"\${path/\/hugo\/content/}\"\\ntype: redirect\\nversioned: true\\n---\\n" > "\${path/\${ver}/_index.md}"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								done
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								for x in "${url_src_dst_vers}"; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  IFS='^' read -r _ _ dst _ <<<"\${x}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while [[ -n "\${dst}" ]]; do
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    touch "\${dst}/_index.md"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dst="\${dst%/*}"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								done
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if [[ -n "${WEBSITE_MOUNTS}" ]]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  unset WEBSITE_SKIP_MOUNTS
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 23:23:33 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								${WEBSITE_EXEC}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    chmod +x "${tempfile}"
							 
						 
					
						
							
								
									
										
										
										
											2023-07-24 16:19:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    volumes="${volumes} --volume=${tempfile}:/entrypoint"
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    readonly volumes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IFS='' read -r cmd <<EOF
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								${PODMAN} run \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --env=HUGO_REFLINKSERRORLEVEL=${HUGO_REFLINKSERRORLEVEL} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --init \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --interactive \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --name=${DOCS_CONTAINER} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --platform=linux/amd64 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --publish=${DOCS_HOST_PORT}:3002 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --publish=3003:3003 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --rm \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  --tty \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ${volumes} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ${DOCS_IMAGE} \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /entrypoint
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2023-09-18 17:49:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    await_build http://localhost:3003 &
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-21 15:56:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if [ -n "${DEBUG}" ]; then
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ${cmd}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      ${cmd} 2>&1| sed \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/Web Server is available at http:\/\/localhost:3003\/ (bind address 0.0.0.0)/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/^hugo server/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/fatal: not a git repository (or any parent up to mount point \/)/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)./ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e "/Makefile:[0-9]*: warning: overriding recipe for target 'docs'/ d" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e "/docs.mk:[0-9]*: warning: ignoring old recipe for target 'docs'/ d" \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/\/usr\/bin\/make -j 2 proxy hserver-docs HUGO_PORT=3003/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/website-proxy/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/rm -rf dist*/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/Press Ctrl+C to stop/ d' \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     -e '/make/ d' || echo
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi
							 
						 
					
						
							
								
									
										
										
										
											2023-05-18 22:50:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ;;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								esac