{{- $folder := .Get "folder" -}} {{- $languageFilter := default "" (.Get "language") -}} {{- $recursive := default false (.Get "recursive") -}} {{- $allFiles := slice -}} {{- $baseURL := $.Site.BaseURL -}} {{- if $recursive -}} {{- $allFiles = partial "readDirRecursive" (dict "path" $folder "allFiles" $allFiles) -}} {{- else -}} {{- $entries := readDir $folder -}} {{- range $entries -}} {{- $allFiles = $allFiles | append (printf "%s/%s" $folder .Name) -}} {{- end -}} {{- end -}} {{- $categories := slice "Contribution/Support" "Telemetry" "Naming/Composition" "CodeStyle" "Inputs/Outputs" "Testing" "Documentation" "Release/Publishing" -}} {{- $languages := slice -}} {{- $classes := slice "Resource" "Pattern" "Utility" -}} {{- $counts := dict -}} {{/* Getting all the pages to find all the possible combinations of categories, languages, and classes. */}} {{- range $allFiles -}} {{- $file := replace . "content/" "" -}} {{- $page := site.GetPage $file -}} {{- $pageTags := $page.Params.tags -}} {{/* At the end, the $categories, $languages, and $classes will have their possible values */}} {{- /* Getting one file/page at time */}} {{- if $page -}} {{- range $pageTags -}} {{- if findRE `^Category-` . -}} {{- $category := replace . "Category-" "" -}} {{- if not (in $categories $category) -}} {{- $categories = $categories | append $category -}} {{- end -}} {{- else if findRE `^Language-` . -}} {{- $language := replace . "Language-" "" -}} {{- if not (in $languages $language) -}} {{- $languages = $languages | append $language -}} {{- end -}} {{- else if findRE `^Class-` . -}} {{- $class := replace . "Class-" "" -}} {{- if not (in $classes $class) -}} {{- $classes = $classes | append $class -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{/* Initialize $counts with zeros */}} {{- range $categories -}} {{- $category := . -}} {{- range $languages -}} {{- $language := . -}} {{- range $classes -}} {{- $class := . -}} {{- $key := printf "%s-%s-%s" $category $language $class -}} {{/* {{- $key := slice $category $language $class -}} */}} {{- $counts = merge $counts (dict $key 0) -}} {{- end -}} {{- end -}} {{- end -}} {{/* {{- $counts = $counts | uniq -}} */}} {{- range $allFiles -}} {{- $file := replace . "content/" "" -}} {{- $page := site.GetPage $file -}} {{- $pageTags := $page.Params.tags -}} {{/* Getting one file/page at a time */}} {{- if $page -}} {{- $categoryTags := slice -}} {{- $languageTags := slice -}} {{- $classTags := slice -}} {{/* Getting all category, language, and class tags from the page */}} {{- range $pageTags -}} {{- if findRE `^Category-` . -}} {{- $categoryTags = $categoryTags | append . -}} {{- else if findRE `^Language-` . -}} {{- $languageTags = $languageTags | append . -}} {{- else if findRE `^Class-` . -}} {{- $classTags = $classTags | append . -}} {{- end -}} {{- end -}} {{/* Counting all combinations of category, language, and class tags */}} {{- range $categoryTags -}} {{- $categoryTag := . -}} {{- $category := replace $categoryTag "Category-" "" -}} {{- range $languageTags -}} {{- $languageTag := . -}} {{- $language := replace $languageTag "Language-" "" -}} {{- range $classTags -}} {{- $classTag := . -}} {{- $class := replace $classTag "Class-" "" -}} {{- $key := printf "%s-%s-%s" $category $language $class -}} {{- $currentCount := index $counts $key -}} {{- $counts = merge $counts (dict $key (add $currentCount 1)) -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- $summary := dict -}} {{- range $languages -}} {{- $language := . -}} {{- range $classes -}} {{- $class := . -}} {{- $key := printf "%s-%s" $language $class -}} {{- $summary = merge $summary (dict $key 0) -}} {{- end -}} {{- end -}} {{- range $categories -}} {{- $category := . -}} {{- range $languages -}} {{- $language := . -}} {{- range $classes -}} {{- $class := . -}} {{- $key := printf "%s-%s-%s" $category $language $class -}} {{- $summaryKey := printf "%s-%s" $language $class -}} {{- $currentCount := index $counts $key -}} {{- $currentSummary := index $summary $summaryKey -}} {{- $summary = merge $summary (dict $summaryKey (add $currentSummary $currentCount)) -}} {{- end -}} {{- end -}} {{- end -}} {{- $urlMap := dict "Contribution/Support-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#contribution--support") "Telemetry-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#telemetry") "Naming/Composition-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#naming--composition") "CodeStyle-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#code-style") "Inputs/Outputs-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#inputs--outputs") "Testing-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#testing") "Documentation-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#documentation") "Release/Publishing-Bicep-Resource" (add .Site.Params.base "/specs/bcp/res/#release--publishing") "Contribution/Support-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#contribution--support") "Telemetry-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#telemetry") "Naming/Composition-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#naming--composition") "CodeStyle-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#code-style") "Inputs/Outputs-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#inputs--outputs") "Testing-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#testing") "Documentation-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#documentation") "Release/Publishing-Bicep-Pattern" (add .Site.Params.base "/specs/bcp/ptn/#release--publishing") "Contribution/Support-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#contribution--support") "Telemetry-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#telemetry") "Naming/Composition-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#naming--composition") "CodeStyle-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#code-style") "Inputs/Outputs-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#inputs--outputs") "Testing-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#testing") "Documentation-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#documentation") "Release/Publishing-Bicep-Utility" (add .Site.Params.base "/specs/bcp/utl/#release--publishing") "Contribution/Support-Terraform-Resource" (add .Site.Params.base "/specs/tf/ptn/#contribution--support") "Telemetry-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#telemetry") "Naming/Composition-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#naming--composition") "CodeStyle-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#code-style") "Inputs/Outputs-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#inputs--outputs") "Testing-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#testing") "Documentation-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#documentation") "Release/Publishing-Terraform-Resource" (add .Site.Params.base "/specs/tf/res/#release--publishing") "Contribution/Support-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#contribution--support") "Telemetry-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#telemetry") "Naming/Composition-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#naming--composition") "CodeStyle-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#code-style") "Inputs/Outputs-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#inputs--outputs") "Testing-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#testing") "Documentation-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#documentation") "Release/Publishing-Terraform-Pattern" (add .Site.Params.base "/specs/tf/ptn/#release--publishing") "Contribution/Support-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#contribution--support") "Telemetry-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#telemetry") "Naming/Composition-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#naming--composition") "CodeStyle-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#code-style") "Inputs/Outputs-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#inputs--outputs") "Testing-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#testing") "Documentation-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#documentation") "Release/Publishing-Terraform-Utility" (add .Site.Params.base "/specs/tf/utl/#release--publishing") -}} {{/* {{- if not (or (eq $languageFilter "Bicep") (eq $languageFilter "Terraform")) -}} {{- end -}} */}} {{- if (eq $languageFilter "") -}} {{- end -}} {{- if or (eq $languageFilter "Bicep") (eq $languageFilter "Terraform") -}} {{- end -}} {{- if or (eq $languageFilter "Bicep") (eq $languageFilter "") -}} {{- end -}} {{- if or (eq $languageFilter "Terraform") (eq $languageFilter "") -}} {{- end -}} {{- range $categories -}} {{- $category := . -}} {{- if or (eq $languageFilter "Bicep") (eq $languageFilter "") -}} {{- $language := "Bicep" -}} {{- range $classes -}} {{- $class := . -}} {{- $key := printf "%s-%s-%s" $category $language $class -}} {{- $url := index $urlMap $key -}} {{- if $url -}} {{- else -}} {{- end -}} {{- end -}} {{- end -}} {{- if or (eq $languageFilter "Terraform") (eq $languageFilter "") -}} {{- $language := "Terraform" -}} {{- range $classes -}} {{- $class := . -}} {{- $key := printf "%s-%s-%s" $category $language $class -}} {{- $url := index $urlMap $key -}} {{- if $url -}} {{- else -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{- if or (eq $languageFilter "Bicep") (eq $languageFilter "") -}} {{- $language := "Bicep" -}} {{- range $classes -}} {{- $class := . -}} {{- $summaryKey := printf "%s-%s" $language $class -}} {{- end -}} {{- end -}} {{- if or (eq $languageFilter "Terraform") (eq $languageFilter "") -}} {{- $language := "Terraform" -}} {{- range $classes -}} {{- $class := . -}} {{- $summaryKey := printf "%s-%s" $language $class -}} {{- end -}} {{- end -}}
Category Bicep {{/* Bicep */}} Terraform {{/* Terraform */}}
Category Resource {{/* Resource */}} Pattern {{/* Pattern */}} Utility {{/* Utility */}} Resource {{/* Resource */}} Pattern {{/* Pattern */}} Utility {{/* Utility */}}
{{ $category }} {{ default 0 (index $counts $key) }}{{ default 0 (index $counts $key) }}{{ default 0 (index $counts $key) }}{{ default 0 (index $counts $key) }}
Summary{{ default 0 (index $summary $summaryKey) }}{{ default 0 (index $summary $summaryKey) }}