From 8372e9c0b980ae5c41d42fe9d0952f7e65e0aa51 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Thu, 3 Feb 2022 22:17:45 +0100 Subject: [PATCH 01/16] #754 Extract the list of node packages into variable Signed-off-by: Sven Strittmatter --- Makefile | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index e3d969214..d6103fb8b 100644 --- a/Makefile +++ b/Makefile @@ -15,31 +15,33 @@ TEMPLATES_DIR = $(PROJECT_DIR)/.templates SCANNERS_CHART_LIST := $(sort $(wildcard $(SCANNERS_DIR)/*/Chart.yaml)) HOOKS_CHART_LIST := $(sort $(wildcard $(HOOKS_DIR)/*/Chart.yaml)) DEMO_TARGETS_CHART_LIST := $(sort $(wildcard $(DEMO_TARGETS_DIR)/*/Chart.yaml)) +# This find construct is based on https://stackoverflow.com/questions/4210042/how-to-exclude-a-directory-in-find-command/4210072#4210072 +PACKAGE_JSON_LIST := $(shell find $(PROJECT_DIR) \( \ + -name '.git' -o \ + -name '.github' -o \ + -name '.idea' -o \ + -name '.reuse' -o \ + -name '.vagrant' -o \ + -name '.vscode' -o \ + -name 'bin' -o \ + -name 'docs' -o \ + -name 'LICENSES' -o \ + -name 'coverage' -o \ + -name 'dist' -o \ + -name 'node_modules' -o \ + -name target \) \ + -prune \ + -false \ + -o -type f \ + -iname package.json) all: help .PHONY: npm-ci-all npm-ci-all: ## Runs npm ci in all node module subfolders. -# This find construct is based on https://stackoverflow.com/questions/4210042/how-to-exclude-a-directory-in-find-command/4210072#4210072 - find . \( \ - -name '.git' -o \ - -name '.github' -o \ - -name '.idea' -o \ - -name '.reuse' -o \ - -name '.vagrant' -o \ - -name '.vscode' -o \ - -name 'bin' -o \ - -name 'docs' -o \ - -name 'LICENSES' -o \ - -name 'coverage' -o \ - -name 'dist' -o \ - -name 'node_modules' -o \ - -name target \) \ - -prune \ - -false \ - -o -type f \ - -iname package.json \ - -execdir npm ci \; + @for package in $(PACKAGE_JSON_LIST); do \ + cd "$$(dirname "$${package}")" && npm ci; \ + done .PHONY: npm-test-all npm-test-all: ## Runs all Jest based test suites. From b207a0b92b3d0b99410bd9e4f2c5528445cec716 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Thu, 3 Feb 2022 22:40:40 +0100 Subject: [PATCH 02/16] #754 Extract target to install operator Signed-off-by: Sven Strittmatter --- Makefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index d6103fb8b..85f16ccfb 100644 --- a/Makefile +++ b/Makefile @@ -48,9 +48,7 @@ npm-test-all: ## Runs all Jest based test suites. npm test -- --testPathIgnorePatterns "/integration-tests/" .PHONY: test-all -test-all: ## Runs all makefile based test suites. - @echo ".: ⚙ Installing the operator for makefile based testing." - cd ./operator && $(MAKE) -s docker-build docker-export kind-import helm-deploy +test-all: install-operator ## Runs all makefile based test suites. @echo ".: ⚙ Running make test for all scanner and hook modules." for dir in scanners/*/ hooks/*/ ; do \ cd $$dir; \ @@ -59,6 +57,11 @@ test-all: ## Runs all makefile based test suites. cd -; \ done; +.PHONY: install-operator +install-operator: ## Install the operator for makefile based testing. + @echo "Installing the operator for makefile based testing..." + cd $(OPERATOR_DIR) && $(MAKE) -s docker-build docker-export kind-import helm-deploy + .PHONY: readme readme: ## Generate README.md based on Chart.yaml and template. @echo ".: ⚙ Generate Helm Docs." From 2092e9572ce9959530e43037f1217407ed915b8b Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Fri, 4 Feb 2022 21:07:39 +0100 Subject: [PATCH 03/16] Use make built in to find files The previous implementation also found dirs like node_modules w/o Makefile. Now the implementation specifically looks for Makefiles in scanners/ and hooks/. This is more robust since we call make in these directories. Signed-off-by: Sven Strittmatter --- Makefile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 85f16ccfb..5a29fe20f 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,9 @@ HELM_DOCS_DIR = $(PROJECT_DIR)/.helm-docs TEMPLATES_DIR = $(PROJECT_DIR)/.templates SCANNERS_CHART_LIST := $(sort $(wildcard $(SCANNERS_DIR)/*/Chart.yaml)) +SCANNERS_TEST_LIST := $(sort $(wildcard $(SCANNERS_DIR)/*/Makefile)) HOOKS_CHART_LIST := $(sort $(wildcard $(HOOKS_DIR)/*/Chart.yaml)) +HOOKS_TEST_LIST := $(sort $(wildcard $(HOOKS_DIR)/*/Makefile)) DEMO_TARGETS_CHART_LIST := $(sort $(wildcard $(DEMO_TARGETS_DIR)/*/Chart.yaml)) # This find construct is based on https://stackoverflow.com/questions/4210042/how-to-exclude-a-directory-in-find-command/4210072#4210072 PACKAGE_JSON_LIST := $(shell find $(PROJECT_DIR) \( \ @@ -49,13 +51,10 @@ npm-test-all: ## Runs all Jest based test suites. .PHONY: test-all test-all: install-operator ## Runs all makefile based test suites. - @echo ".: ⚙ Running make test for all scanner and hook modules." - for dir in scanners/*/ hooks/*/ ; do \ - cd $$dir; \ - echo ".: ⚙ Running make test for '$$dir'."; \ - $(MAKE) -s test || exit 1 ; \ - cd -; \ - done; + @echo "Running make test for all scanner and hook modules..." + @for dir in $(SCANNERS_TEST_LIST) $(HOOKS_TEST_LIST); do \ + cd "$$(dirname "$$dir")" && $(MAKE) -s test || exit 1; \ + done .PHONY: install-operator install-operator: ## Install the operator for makefile based testing. From f9898a8fb6b3472bd4c98170de35e8766dbab9ad Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Fri, 4 Feb 2022 21:16:37 +0100 Subject: [PATCH 04/16] Remove argument which is always the same Signed-off-by: Sven Strittmatter --- bin/generate-docs.sh | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh index 82b5847b0..6dfc6aa66 100755 --- a/bin/generate-docs.sh +++ b/bin/generate-docs.sh @@ -45,18 +45,17 @@ function validate_args() { } function generate_docs() { - local chart_search_root output_file base_template docs_template dockerhub_template + local chart_search_root output_file docs_template dockerhub_template chart_search_root="${1}" output_file="${2}" - base_template="${3}" - docs_template="${4}" - dockerhub_template="${5}" + docs_template="${3}" + dockerhub_template="${4}" helm-docs --log-level debug \ --chart-search-root="${chart_search_root}" \ --output-file="${output_file}" \ - --template-files="${base_template}" \ + --template-files="${HELM_DOCS_DIR}/templates.gotmpl" \ --template-files="${docs_template}" \ --template-files="${dockerhub_template}" } @@ -81,7 +80,6 @@ function generate_scanner_docs() { generate_docs "${scanner_dir}" \ "docs/README.DockerHub-Parser.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" else @@ -93,7 +91,6 @@ function generate_scanner_docs() { generate_docs "${scanner_dir}" \ "docs/README.DockerHub-Scanner.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" else @@ -103,7 +100,6 @@ function generate_scanner_docs() { log "Generating main doc..." generate_docs "${scanner_dir}" \ "docs/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -123,12 +119,10 @@ function generate_hook_docs() { generate_docs "${hook_dir}" \ "docs/README.DockerHub-Hook.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Hook.md.gotmpl" generate_docs "${hook_dir}" \ "docs/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -148,13 +142,11 @@ function generate_demo_target_docs() { generate_docs "${demo_target_dir}" \ "docs/README.DockerHub-Target.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Target.md.gotmpl" generate_docs "${demo_target_dir}" \ "docs/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -174,12 +166,10 @@ function generate_operator_docs() { generate_docs "${operator_dir}" \ "docs/README.DockerHub-Core.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${operator_dir}" \ "docs/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -199,12 +189,10 @@ function generate_auto_discovery_docs() { generate_docs "${auto_discovery_dir}" \ "docs/README.DockerHub-Core.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${auto_discovery_dir}.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${auto_discovery_dir}" \ "docs/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/templates.gotmpl" \ "${auto_discovery_dir}.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } From 03dce7946e25a655e72b5ae9f4c725526fde2b91 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Fri, 4 Feb 2022 21:25:27 +0100 Subject: [PATCH 05/16] #754 Extract check for docs dir into main function Signed-off-by: Sven Strittmatter --- bin/generate-docs.sh | 82 +++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 55 deletions(-) diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh index 6dfc6aa66..0c9a8306e 100755 --- a/bin/generate-docs.sh +++ b/bin/generate-docs.sh @@ -61,20 +61,12 @@ function generate_docs() { } function generate_scanner_docs() { - log "Generating scanner docs for ${CHART_FILE}..." + local scanner_dir parser_dir scanner_image_dir - local scanner_dir docs_dir parser_dir scanner_image_dir - - scanner_dir="$(dirname "${CHART_FILE}")" - docs_dir="${scanner_dir}/docs" + scanner_dir="${1}" parser_dir="${scanner_dir}/parser" scanner_image_dir="${scanner_dir}/scanner" - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 - fi - if [ -d "${parser_dir}" ]; then log "Parser found at: '${parser_dir}'. Generating parser doc..." @@ -105,17 +97,9 @@ function generate_scanner_docs() { } function generate_hook_docs() { - log "Generating hook docs for ${CHART_FILE}..." - - local hook_dir docs_dir + local hook_dir - hook_dir="$(dirname "${CHART_FILE}")" - docs_dir="${hook_dir}/docs" - - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 - fi + hook_dir="${1}" generate_docs "${hook_dir}" \ "docs/README.DockerHub-Hook.md" \ @@ -128,17 +112,9 @@ function generate_hook_docs() { } function generate_demo_target_docs() { - log "Generating demo target docs for ${CHART_FILE}..." - - local demo_target_dir docs_dir + local demo_target_dir - demo_target_dir="$(dirname "${CHART_FILE}")" - docs_dir="${demo_target_dir}/docs" - - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 - fi + demo_target_dir="${1}" generate_docs "${demo_target_dir}" \ "docs/README.DockerHub-Target.md" \ @@ -152,17 +128,9 @@ function generate_demo_target_docs() { } function generate_operator_docs() { - log "Generating operator docs for ${CHART_FILE}..." - - local operator_dir docs_dir + local operator_dir - operator_dir="$(dirname "${CHART_FILE}")" - docs_dir="${operator_dir}/docs" - - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 - fi + operator_dir="${1}" generate_docs "${operator_dir}" \ "docs/README.DockerHub-Core.md" \ @@ -175,17 +143,9 @@ function generate_operator_docs() { } function generate_auto_discovery_docs() { - log "Generating auto discovery docs for ${CHART_FILE}..." + local auto_discovery_dir - local auto_discovery_dir docs_dir - - auto_discovery_dir="$(dirname "${CHART_FILE}")" - docs_dir="${auto_discovery_dir}/docs" - - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 - fi + auto_discovery_dir="${1}" generate_docs "${auto_discovery_dir}" \ "docs/README.DockerHub-Core.md" \ @@ -200,21 +160,33 @@ function generate_auto_discovery_docs() { function main() { validate_args + log "Generating docs for ${CHART_FILE}..." + + local work_dir docs_dir + + work_dir="$(dirname "${CHART_FILE}")" + docs_dir="${work_dir}/docs" + + if [ ! -d "${docs_dir}" ]; then + log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" + exit 0 + fi + case "${DOC_TYPE}" in "--scanner") - generate_scanner_docs + generate_scanner_docs "${work_dir}" ;; "--hook") - generate_hook_docs + generate_hook_docs "${work_dir}" ;; "--demo-target") - generate_demo_target_docs + generate_demo_target_docs "${work_dir}" ;; "--operator") - generate_operator_docs + generate_operator_docs "${work_dir}" ;; "--auto-discovery") - generate_auto_discovery_docs + generate_auto_discovery_docs "${work_dir}" ;; *) error "Unsupported doc type: ${DOC_TYPE}!" From e599505c0a79c2cb87e944cf340cb9503cd3fd9f Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Mon, 7 Feb 2022 10:01:02 +0100 Subject: [PATCH 06/16] #754 Add some question markers Signed-off-by: Sven Strittmatter --- bin/generate-docs.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/generate-docs.sh b/bin/generate-docs.sh index 0c9a8306e..eb82e065a 100755 --- a/bin/generate-docs.sh +++ b/bin/generate-docs.sh @@ -74,6 +74,7 @@ function generate_scanner_docs() { "docs/README.DockerHub-Parser.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" + # XXX: #754 Why is here no generation for ArtifactHub? else log "No parser found '${parser_dir}'! Skipping parser doc." fi @@ -85,11 +86,13 @@ function generate_scanner_docs() { "docs/README.DockerHub-Scanner.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" + # XXX: #754 Why is here no generation for ArtifactHub? else log "No scanner found at '${scanner_image_dir}'! Skipping scanner doc." fi log "Generating main doc..." + # XXX: #754 Why is here no generation for DockerHub? generate_docs "${scanner_dir}" \ "docs/README.ArtifactHub.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ From 0634e90fce71cdf502ab0fec605ee0559ba86b6f Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 12:12:38 +0100 Subject: [PATCH 07/16] #754 Rename doc generation script Since this script only generates documentation for Helm charts this should be reflected in the script name. Signed-off-by: Sven Strittmatter --- Makefile | 10 +++++----- bin/{generate-docs.sh => generate-helm-docs.sh} | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename bin/{generate-docs.sh => generate-helm-docs.sh} (100%) diff --git a/Makefile b/Makefile index 5a29fe20f..e231f1e1c 100644 --- a/Makefile +++ b/Makefile @@ -69,27 +69,27 @@ readme: ## Generate README.md based on Chart.yaml and template. .PHONY: hook-docs hook-docs: ## Generate documentation for hooks. @for chart in $(HOOKS_CHART_LIST); do \ - $(BIN_DIR)/generate-docs.sh --hook "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --hook "$${chart}" $(HELM_DOCS_DIR); \ done .PHONY: scanner-docs scanner-docs: ## Generate documentation for scanners. @for chart in $(SCANNERS_CHART_LIST); do \ - $(BIN_DIR)/generate-docs.sh --scanner "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --scanner "$${chart}" $(HELM_DOCS_DIR); \ done .PHONY: operator-docs operator-docs: ## Generate documentation for the operator. - $(BIN_DIR)/generate-docs.sh --operator $(OPERATOR_DIR)/Chart.yaml $(HELM_DOCS_DIR) + $(BIN_DIR)/generate-helm-docs.sh --operator $(OPERATOR_DIR)/Chart.yaml $(HELM_DOCS_DIR) .PHONY: auto-discovery-docs auto-discovery-docs: ## Generate documentation for the auto-discovery. - $(BIN_DIR)/generate-docs.sh --operator $(AUTO_DISCOVERY_DIR)/kubernetes/Chart.yaml $(HELM_DOCS_DIR) + $(BIN_DIR)/generate-helm-docs.sh --operator $(AUTO_DISCOVERY_DIR)/kubernetes/Chart.yaml $(HELM_DOCS_DIR) .PHONY: demo-target-docs demo-target-docs: ## Generate documentation for demo targets. @for chart in $(DEMO_TARGETS_CHART_LIST); do \ - $(BIN_DIR)/generate-docs.sh --demo-target "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --demo-target "$${chart}" $(HELM_DOCS_DIR); \ done .PHONY: docs diff --git a/bin/generate-docs.sh b/bin/generate-helm-docs.sh similarity index 100% rename from bin/generate-docs.sh rename to bin/generate-helm-docs.sh From 58c8ef80cde79d8371eeedeec621cf335b84fd43 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 12:26:44 +0100 Subject: [PATCH 08/16] #754 Extract docs dir name into single variable This enables easier renaming of this dir at one point in the script. Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index eb82e065a..34d754a1e 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -16,6 +16,8 @@ DOC_TYPE="${1:-}" CHART_FILE="${2:-}" HELM_DOCS_DIR="${3:-}" +DOCS_DIR_NAME="docs" + function log() { echo -e "${COLOR_PREFIX}SCB${COLOR_RESET} ${1}" } @@ -71,7 +73,7 @@ function generate_scanner_docs() { log "Parser found at: '${parser_dir}'. Generating parser doc..." generate_docs "${scanner_dir}" \ - "docs/README.DockerHub-Parser.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Parser.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" # XXX: #754 Why is here no generation for ArtifactHub? @@ -83,7 +85,7 @@ function generate_scanner_docs() { log "Scanner found at: '${scanner_image_dir}'. Generating scanner doc..." generate_docs "${scanner_dir}" \ - "docs/README.DockerHub-Scanner.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Scanner.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" # XXX: #754 Why is here no generation for ArtifactHub? @@ -94,7 +96,7 @@ function generate_scanner_docs() { log "Generating main doc..." # XXX: #754 Why is here no generation for DockerHub? generate_docs "${scanner_dir}" \ - "docs/README.ArtifactHub.md" \ + "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -105,11 +107,11 @@ function generate_hook_docs() { hook_dir="${1}" generate_docs "${hook_dir}" \ - "docs/README.DockerHub-Hook.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Hook.md" \ "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Hook.md.gotmpl" generate_docs "${hook_dir}" \ - "docs/README.ArtifactHub.md" \ + "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -120,12 +122,12 @@ function generate_demo_target_docs() { demo_target_dir="${1}" generate_docs "${demo_target_dir}" \ - "docs/README.DockerHub-Target.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Target.md" \ "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Target.md.gotmpl" generate_docs "${demo_target_dir}" \ - "docs/README.ArtifactHub.md" \ + "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -136,11 +138,11 @@ function generate_operator_docs() { operator_dir="${1}" generate_docs "${operator_dir}" \ - "docs/README.DockerHub-Core.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${operator_dir}" \ - "docs/README.ArtifactHub.md" \ + "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -151,11 +153,11 @@ function generate_auto_discovery_docs() { auto_discovery_dir="${1}" generate_docs "${auto_discovery_dir}" \ - "docs/README.DockerHub-Core.md" \ + "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ "${auto_discovery_dir}.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${auto_discovery_dir}" \ - "docs/README.ArtifactHub.md" \ + "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${auto_discovery_dir}.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -168,7 +170,7 @@ function main() { local work_dir docs_dir work_dir="$(dirname "${CHART_FILE}")" - docs_dir="${work_dir}/docs" + docs_dir="${work_dir}/${DOCS_DIR_NAME}" if [ ! -d "${docs_dir}" ]; then log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" From 98f94efe4f69fb261c7f78b83a862a02cba41d9f Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 12:58:05 +0100 Subject: [PATCH 09/16] #754 Add function to generate the top level READMEs Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 60 ++++++++++++++++++++++++++++++++------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index 34d754a1e..2406fe56c 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -10,7 +10,23 @@ COLOR_PREFIX="\e[32m" COLOR_ERROR="\e[31m" COLOR_RESET="\e[0m" -USAGE="$(basename "${0}") --scanner|--hook|--demo-target|--operator|--auto-discovery path/to/scanner/Chart.yaml path/to/.helm-docs" +# +# This script generates various HElm documentation from chart files +# +# This script was extracted from the main Makefile to make both easier maintainable. +# +# This script provides some switches to generate particular parts of the whole documentation. The documentation +# Consists of three parts: +# +# 1. A main README file for the Chart. This is generated by the switch `--readme`. This is exceptional from the other +# switches because it expects thebase directory with all chart files in sub directories. All the readmes for all +# charts will be generated in one sigle run. +# 2. Chart documentation for ArtifactHub. This file is generated as part of this script when invoked with any switch +# except the`--readme` switch (see above). Not for all images (see below) a chart documentation wil be generated! +# 3. Image documentation forDockerHub. . This file is generated as part of this script when invoked with any switch +# except the`--readme` switch (see above). Not for all charts (see below) a DockerHub documentation will be generated! + +USAGE="$(basename "${0}") --scanner|--hook|--demo-target|--operator|--auto-discovery|--readme path/to/Chart.yaml|dir/with/charts path/to/.helm-docs" DOC_TYPE="${1:-}" CHART_FILE="${2:-}" @@ -47,19 +63,19 @@ function validate_args() { } function generate_docs() { - local chart_search_root output_file docs_template dockerhub_template + local chart_search_root output_file docs_template readme_template chart_search_root="${1}" output_file="${2}" docs_template="${3}" - dockerhub_template="${4}" + readme_template="${4}" - helm-docs --log-level debug \ + helm-docs \ --chart-search-root="${chart_search_root}" \ --output-file="${output_file}" \ --template-files="${HELM_DOCS_DIR}/templates.gotmpl" \ --template-files="${docs_template}" \ - --template-files="${dockerhub_template}" + --template-files="${readme_template}" } function generate_scanner_docs() { @@ -162,6 +178,17 @@ function generate_auto_discovery_docs() { "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } +function generate_readme() { + local repo_base_dir + + repo_base_dir="${1}" + + generate_docs "${repo_base_dir}" \ + "README.md" \ + ".helm-docs.gotmpl" \ + "${HELM_DOCS_DIR}/README.md.gotmpl" +} + function main() { validate_args @@ -169,12 +196,22 @@ function main() { local work_dir docs_dir - work_dir="$(dirname "${CHART_FILE}")" - docs_dir="${work_dir}/${DOCS_DIR_NAME}" + # There are two main cases this script is invoked: + # 1. For one found chart file (e.g. of a scanner or hook): In this case we need + # the parent directory of this chart file as working directory and we ned to ensure + # that there is a ${DOCS_DIR_NAME} directory where we store the generated files. + # 2. For generating the top level READMEs. Here we expect a base directory as working dir + # from where helm-docs collect all Chart.yml by itself. + if [[ -d "${CHART_FILE}" ]]; then + work_dir="${CHART_FILE}" + else + work_dir="$(dirname "${CHART_FILE}")" + docs_dir="${work_dir}/${DOCS_DIR_NAME}" - if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" - exit 0 + if [ ! -d "${docs_dir}" ]; then + log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" + exit 0 + fi fi case "${DOC_TYPE}" in @@ -193,6 +230,9 @@ function main() { "--auto-discovery") generate_auto_discovery_docs "${work_dir}" ;; + "--readme") + generate_readme "${work_dir}" + ;; *) error "Unsupported doc type: ${DOC_TYPE}!" error "${USAGE}" From 6f4f9d6034545b0b98dff90aaebbd0e62bc63838 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 13:01:05 +0100 Subject: [PATCH 10/16] #754 Rename var to reflect the dual use of it It is not very clean to use a varibale for two distinct things. But that's the easiet solution. Maybe we found a better one on further refacotrings. Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index 2406fe56c..11ebb38c7 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -29,7 +29,8 @@ COLOR_RESET="\e[0m" USAGE="$(basename "${0}") --scanner|--hook|--demo-target|--operator|--auto-discovery|--readme path/to/Chart.yaml|dir/with/charts path/to/.helm-docs" DOC_TYPE="${1:-}" -CHART_FILE="${2:-}" +# This is either path to a Chart.yml or a directory containing some of them. +CHART_FILE_OR_DIR="${2:-}" HELM_DOCS_DIR="${3:-}" DOCS_DIR_NAME="docs" @@ -49,7 +50,7 @@ function validate_args() { exit 1 fi - if [[ -z "${CHART_FILE}" ]]; then + if [[ -z "${CHART_FILE_OR_DIR}" ]]; then error "No chart file given as second argument!" error "${USAGE}" exit 1 @@ -192,7 +193,7 @@ function generate_readme() { function main() { validate_args - log "Generating docs for ${CHART_FILE}..." + log "Generating docs for ${CHART_FILE_OR_DIR}..." local work_dir docs_dir @@ -202,14 +203,14 @@ function main() { # that there is a ${DOCS_DIR_NAME} directory where we store the generated files. # 2. For generating the top level READMEs. Here we expect a base directory as working dir # from where helm-docs collect all Chart.yml by itself. - if [[ -d "${CHART_FILE}" ]]; then - work_dir="${CHART_FILE}" + if [[ -d "${CHART_FILE_OR_DIR}" ]]; then + work_dir="${CHART_FILE_OR_DIR}" else - work_dir="$(dirname "${CHART_FILE}")" + work_dir="$(dirname "${CHART_FILE_OR_DIR}")" docs_dir="${work_dir}/${DOCS_DIR_NAME}" if [ ! -d "${docs_dir}" ]; then - log "Ignoring docs creation process for '${CHART_FILE}' because docs folder found at: '${docs_dir}'!" + log "Ignoring docs creation process for '${CHART_FILE_OR_DIR}' because docs folder found at: '${docs_dir}'!" exit 0 fi fi From 327c854b158800862633fa9dcb7aa65560c8be20 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 13:12:44 +0100 Subject: [PATCH 11/16] #754 Add missing slash in template path for auto discovery docs Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index 11ebb38c7..1e962623b 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -175,7 +175,7 @@ function generate_auto_discovery_docs() { "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${auto_discovery_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${auto_discovery_dir}.helm-docs.gotmpl" \ + "${auto_discovery_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } From 95d99874f6e0e18111f4e5910c09155e49d87cac Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 13:51:35 +0100 Subject: [PATCH 12/16] #754 Use generator script to generate top level READMEs Signed-off-by: Sven Strittmatter --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e231f1e1c..97ed04d08 100644 --- a/Makefile +++ b/Makefile @@ -63,8 +63,7 @@ install-operator: ## Install the operator for makefile based testing. .PHONY: readme readme: ## Generate README.md based on Chart.yaml and template. - @echo ".: ⚙ Generate Helm Docs." - helm-docs --template-files=$(HELM_DOCS_DIR)/templates.gotmpl --template-files=.helm-docs.gotmpl --template-files=$(HELM_DOCS_DIR)/README.md.gotmpl + $(BIN_DIR)/generate-helm-docs.sh --readme $(PROJECT_DIR) $(HELM_DOCS_DIR) .PHONY: hook-docs hook-docs: ## Generate documentation for hooks. From eceb12599cffaaf9dbb380cc4ac105f4541ad26f Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 15:33:02 +0100 Subject: [PATCH 13/16] #754 Remove quotes from Makefile As explaine at SO[1] one should not quote anything in a Makefile. 1: https://stackoverflow.com/a/23332194/952722 Signed-off-by: Sven Strittmatter --- Makefile | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 97ed04d08..4b49fb05c 100644 --- a/Makefile +++ b/Makefile @@ -19,18 +19,18 @@ HOOKS_TEST_LIST := $(sort $(wildcard $(HOOKS_DIR)/*/Makefile)) DEMO_TARGETS_CHART_LIST := $(sort $(wildcard $(DEMO_TARGETS_DIR)/*/Chart.yaml)) # This find construct is based on https://stackoverflow.com/questions/4210042/how-to-exclude-a-directory-in-find-command/4210072#4210072 PACKAGE_JSON_LIST := $(shell find $(PROJECT_DIR) \( \ - -name '.git' -o \ - -name '.github' -o \ - -name '.idea' -o \ - -name '.reuse' -o \ - -name '.vagrant' -o \ - -name '.vscode' -o \ - -name 'bin' -o \ - -name 'docs' -o \ - -name 'LICENSES' -o \ - -name 'coverage' -o \ - -name 'dist' -o \ - -name 'node_modules' -o \ + -name .git -o \ + -name .github -o \ + -name .idea -o \ + -name .reuse -o \ + -name .vagrant -o \ + -name .vscode -o \ + -name bin -o \ + -name docs -o \ + -name LICENSES -o \ + -name coverage -o \ + -name dist -o \ + -name node_modules -o \ -name target \) \ -prune \ -false \ @@ -42,18 +42,18 @@ all: help .PHONY: npm-ci-all npm-ci-all: ## Runs npm ci in all node module subfolders. @for package in $(PACKAGE_JSON_LIST); do \ - cd "$$(dirname "$${package}")" && npm ci; \ + cd $$(dirname $${package}) && npm ci; \ done .PHONY: npm-test-all npm-test-all: ## Runs all Jest based test suites. - npm test -- --testPathIgnorePatterns "/integration-tests/" + npm test -- --testPathIgnorePatterns /integration-tests/ .PHONY: test-all test-all: install-operator ## Runs all makefile based test suites. @echo "Running make test for all scanner and hook modules..." @for dir in $(SCANNERS_TEST_LIST) $(HOOKS_TEST_LIST); do \ - cd "$$(dirname "$$dir")" && $(MAKE) -s test || exit 1; \ + cd $$(dirname $$dir) && $(MAKE) -s test || exit 1; \ done .PHONY: install-operator @@ -68,13 +68,13 @@ readme: ## Generate README.md based on Chart.yaml and template. .PHONY: hook-docs hook-docs: ## Generate documentation for hooks. @for chart in $(HOOKS_CHART_LIST); do \ - $(BIN_DIR)/generate-helm-docs.sh --hook "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --hook $${chart} $(HELM_DOCS_DIR); \ done .PHONY: scanner-docs scanner-docs: ## Generate documentation for scanners. @for chart in $(SCANNERS_CHART_LIST); do \ - $(BIN_DIR)/generate-helm-docs.sh --scanner "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --scanner $${chart} $(HELM_DOCS_DIR); \ done .PHONY: operator-docs @@ -88,7 +88,7 @@ auto-discovery-docs: ## Generate documentation for the auto-discovery. .PHONY: demo-target-docs demo-target-docs: ## Generate documentation for demo targets. @for chart in $(DEMO_TARGETS_CHART_LIST); do \ - $(BIN_DIR)/generate-helm-docs.sh --demo-target "$${chart}" $(HELM_DOCS_DIR); \ + $(BIN_DIR)/generate-helm-docs.sh --demo-target $${chart} $(HELM_DOCS_DIR); \ done .PHONY: docs @@ -97,15 +97,15 @@ docs: readme hook-docs scanner-docs operator-docs auto-discovery-docs demo-targe .PHONY: create-new-scanner create-new-scanner: ## Creates templates for a new scanner, pass NAME=NEW-SCANNER to this target. ifdef NAME - rm -rf "$(SCANNERS_DIR)/$(NAME)" - cp -r "$(TEMPLATES_DIR)/new-scanner/" "$(SCANNERS_DIR)/$(NAME)" - find $(SCANNERS_DIR)/$(NAME) -type f ! -name 'tmp' \ - -exec sed -n "s/new-scanner/$(NAME)/g;w $(SCANNERS_DIR)/$(NAME)/tmp" {} \; \ - -exec mv "$(SCANNERS_DIR)/$(NAME)/tmp" {} \; - mv "$(SCANNERS_DIR)/$(NAME)/templates/new-scanner-parse-definition.yaml" \ - "$(SCANNERS_DIR)/$(NAME)/templates/$(NAME)-parse-definition.yaml" - mv "$(SCANNERS_DIR)/$(NAME)/templates/new-scanner-scan-type.yaml" \ - "$(SCANNERS_DIR)/$(NAME)/templates/$(NAME)-scan-type.yaml" + rm -rf $(SCANNERS_DIR)/$(NAME) + cp -r $(TEMPLATES_DIR)/new-scanner/ $(SCANNERS_DIR)/$(NAME) + find $(SCANNERS_DIR)/$(NAME) -type f ! -name tmp \ + -exec sed -n s/new-scanner/$(NAME)/g;w $(SCANNERS_DIR)/$(NAME)/tmp {} \; \ + -exec mv $(SCANNERS_DIR)/$(NAME)/tmp {} \; + mv $(SCANNERS_DIR)/$(NAME)/templates/new-scanner-parse-definition.yaml \ + $(SCANNERS_DIR)/$(NAME)/templates/$(NAME)-parse-definition.yaml + mv $(SCANNERS_DIR)/$(NAME)/templates/new-scanner-scan-type.yaml \ + $(SCANNERS_DIR)/$(NAME)/templates/$(NAME)-scan-type.yaml else @echo "Scanner name not defined, please provide via make create-new-scanner NAME=NEW-SCANNER" endif From 72e09099d343d10e3b988a97a8d8224dec9bdf47 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 15:42:41 +0100 Subject: [PATCH 14/16] #754 Answer the XXX tags Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index 1e962623b..2d2f4df80 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -88,30 +88,33 @@ function generate_scanner_docs() { if [ -d "${parser_dir}" ]; then log "Parser found at: '${parser_dir}'. Generating parser doc..." - + # Since parsers do not have an own Helm chart, but are included in + # the Helm chart of the related scanner, we do not generate a doc file + # for ArtifactHub. generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Parser.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" - # XXX: #754 Why is here no generation for ArtifactHub? else log "No parser found '${parser_dir}'! Skipping parser doc." fi if [ -d "${scanner_image_dir}" ]; then log "Scanner found at: '${scanner_image_dir}'. Generating scanner doc..." - + # For own custom scanners (e.g. Nmap which does not provide an official image) + # we generate docs for DockerHub, but not for ArtifactHub because the scanner + # image does not have its own Helm chart. It belongs to the main chart which + # is generated separately. generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Scanner.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" - # XXX: #754 Why is here no generation for ArtifactHub? else log "No scanner found at '${scanner_image_dir}'! Skipping scanner doc." fi log "Generating main doc..." - # XXX: #754 Why is here no generation for DockerHub? + # Here we generate the main doc of the Helm chart for artifact hub. generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ "${scanner_dir}/.helm-docs.gotmpl" \ From c5676ea45df43861165e6de3d458cfc3929010d0 Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 15:45:29 +0100 Subject: [PATCH 15/16] #754 Remove redundant argument of local template This file is always expected as sibling of the Chart.yml and therefore can be static. Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index 2d2f4df80..d1b25d88f 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -64,18 +64,17 @@ function validate_args() { } function generate_docs() { - local chart_search_root output_file docs_template readme_template + local chart_search_root output_file readme_template chart_search_root="${1}" output_file="${2}" - docs_template="${3}" - readme_template="${4}" + readme_template="${3}" helm-docs \ --chart-search-root="${chart_search_root}" \ --output-file="${output_file}" \ --template-files="${HELM_DOCS_DIR}/templates.gotmpl" \ - --template-files="${docs_template}" \ + --template-files=".helm-docs.gotmpl" \ --template-files="${readme_template}" } @@ -93,7 +92,6 @@ function generate_scanner_docs() { # for ArtifactHub. generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Parser.md" \ - "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" else log "No parser found '${parser_dir}'! Skipping parser doc." @@ -107,17 +105,15 @@ function generate_scanner_docs() { # is generated separately. generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Scanner.md" \ - "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" else log "No scanner found at '${scanner_image_dir}'! Skipping scanner doc." fi log "Generating main doc..." - # Here we generate the main doc of the Helm chart for artifact hub. + # Here we generate the main doc of the Helm chart for artifact hub.` generate_docs "${scanner_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${scanner_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -128,11 +124,9 @@ function generate_hook_docs() { generate_docs "${hook_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Hook.md" \ - "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Hook.md.gotmpl" generate_docs "${hook_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${hook_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -143,12 +137,10 @@ function generate_demo_target_docs() { generate_docs "${demo_target_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Target.md" \ - "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Target.md.gotmpl" generate_docs "${demo_target_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${demo_target_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -159,11 +151,9 @@ function generate_operator_docs() { generate_docs "${operator_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ - "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${operator_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${operator_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -174,11 +164,9 @@ function generate_auto_discovery_docs() { generate_docs "${auto_discovery_dir}" \ "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ - "${auto_discovery_dir}.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" generate_docs "${auto_discovery_dir}" \ "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${auto_discovery_dir}/.helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" } @@ -189,7 +177,6 @@ function generate_readme() { generate_docs "${repo_base_dir}" \ "README.md" \ - ".helm-docs.gotmpl" \ "${HELM_DOCS_DIR}/README.md.gotmpl" } From 4aff68753e9fdf9a6d3609339e054956e5dc499e Mon Sep 17 00:00:00 2001 From: Sven Strittmatter Date: Tue, 8 Feb 2022 16:45:06 +0100 Subject: [PATCH 16/16] #754 Derive the template name from output file name Signed-off-by: Sven Strittmatter --- bin/generate-helm-docs.sh | 67 ++++++++++++--------------------------- 1 file changed, 21 insertions(+), 46 deletions(-) diff --git a/bin/generate-helm-docs.sh b/bin/generate-helm-docs.sh index d1b25d88f..48252eba4 100755 --- a/bin/generate-helm-docs.sh +++ b/bin/generate-helm-docs.sh @@ -64,18 +64,22 @@ function validate_args() { } function generate_docs() { - local chart_search_root output_file readme_template + local chart_search_root output_file base_template local_template output_template chart_search_root="${1}" output_file="${2}" - readme_template="${3}" + + base_template="${HELM_DOCS_DIR}/templates.gotmpl" + local_template=".helm-docs.gotmpl" + # Strip of the docs dir prefix from output file. + output_template="${HELM_DOCS_DIR}/${output_file#"$DOCS_DIR_NAME/"}.gotmpl" helm-docs \ --chart-search-root="${chart_search_root}" \ --output-file="${output_file}" \ - --template-files="${HELM_DOCS_DIR}/templates.gotmpl" \ - --template-files=".helm-docs.gotmpl" \ - --template-files="${readme_template}" + --template-files="${base_template}" \ + --template-files="${local_template}" \ + --template-files="${output_template}" } function generate_scanner_docs() { @@ -90,9 +94,7 @@ function generate_scanner_docs() { # Since parsers do not have an own Helm chart, but are included in # the Helm chart of the related scanner, we do not generate a doc file # for ArtifactHub. - generate_docs "${scanner_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Parser.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Parser.md.gotmpl" + generate_docs "${scanner_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Parser.md" else log "No parser found '${parser_dir}'! Skipping parser doc." fi @@ -103,71 +105,46 @@ function generate_scanner_docs() { # we generate docs for DockerHub, but not for ArtifactHub because the scanner # image does not have its own Helm chart. It belongs to the main chart which # is generated separately. - generate_docs "${scanner_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Scanner.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Scanner.md.gotmpl" + generate_docs "${scanner_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Scanner.md" else log "No scanner found at '${scanner_image_dir}'! Skipping scanner doc." fi log "Generating main doc..." # Here we generate the main doc of the Helm chart for artifact hub.` - generate_docs "${scanner_dir}" \ - "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" + generate_docs "${scanner_dir}" "${DOCS_DIR_NAME}/README.ArtifactHub.md" } function generate_hook_docs() { local hook_dir hook_dir="${1}" - - generate_docs "${hook_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Hook.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Hook.md.gotmpl" - generate_docs "${hook_dir}" \ - "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" + generate_docs "${hook_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Hook.md" + generate_docs "${hook_dir}" "${DOCS_DIR_NAME}/README.ArtifactHub.md" } function generate_demo_target_docs() { local demo_target_dir demo_target_dir="${1}" - - generate_docs "${demo_target_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Target.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Target.md.gotmpl" - - generate_docs "${demo_target_dir}" \ - "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" + generate_docs "${demo_target_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Target.md" + generate_docs "${demo_target_dir}" "${DOCS_DIR_NAME}/README.ArtifactHub.md" } function generate_operator_docs() { local operator_dir operator_dir="${1}" - - generate_docs "${operator_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" - generate_docs "${operator_dir}" \ - "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" + generate_docs "${operator_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Core.md" + generate_docs "${operator_dir}" "${DOCS_DIR_NAME}/README.ArtifactHub.md" } function generate_auto_discovery_docs() { local auto_discovery_dir auto_discovery_dir="${1}" - - generate_docs "${auto_discovery_dir}" \ - "${DOCS_DIR_NAME}/README.DockerHub-Core.md" \ - "${HELM_DOCS_DIR}/README.DockerHub-Core.md.gotmpl" - generate_docs "${auto_discovery_dir}" \ - "${DOCS_DIR_NAME}/README.ArtifactHub.md" \ - "${HELM_DOCS_DIR}/README.ArtifactHub.md.gotmpl" + generate_docs "${auto_discovery_dir}" "${DOCS_DIR_NAME}/README.DockerHub-Core.md" + generate_docs "${auto_discovery_dir}" "${DOCS_DIR_NAME}/README.ArtifactHub.md" } function generate_readme() { @@ -175,9 +152,7 @@ function generate_readme() { repo_base_dir="${1}" - generate_docs "${repo_base_dir}" \ - "README.md" \ - "${HELM_DOCS_DIR}/README.md.gotmpl" + generate_docs "${repo_base_dir}" "README.md" } function main() {