fixing mount points and updating the include
partial
1. Mounted Configuration Directory: Added /srv/configs as a mount point in
/srv/dev/hugo/wiki/config/_default/hugo.toml. This allows Hugo's readFile and fileExists functions to
access your Docker Compose and other configuration files within the virtual filesystem.
2. Improved include Partial: Rewrote /srv/dev/hugo/wiki/layouts/partials/include.html with the following
enhancements:
* Path Mapping: It now automatically maps absolute paths like /srv/configs/... to the new configs/ mount
and /srv/docs/private/... to the existing content/private/ mount.
* Raw Content Support: If the included file is not a Markdown file (e.g., .yaml, .env, .sh), it now
outputs the raw content instead of attempting to render it as Markdown. This ensures that your Docker
Compose files are included exactly as they are when wrapped in a code block.
* Robust Lookups: Added better path variation checking to handle both absolute and relative paths more
gracefully.
This commit is contained in:
@@ -49,3 +49,6 @@ enableGitInfo = true
|
||||
[[module.mounts]]
|
||||
source = "/srv/docs/private"
|
||||
target = "content/private"
|
||||
[[module.mounts]]
|
||||
source = "/srv/configs"
|
||||
target = "configs"
|
||||
|
||||
@@ -1,52 +1,57 @@
|
||||
{{/*
|
||||
Partial: include.html
|
||||
Handles including external Markdown files and rendering them.
|
||||
Handles including external files (Markdown, YAML, etc.) and rendering or outputting them.
|
||||
*/}}
|
||||
{{- $path := .path -}}
|
||||
{{- $context := .context -}}
|
||||
|
||||
{{/* Map absolute private paths to the relative content mount point */}}
|
||||
{{- $path = replace $path "/srv/docs/private/" "" -}}
|
||||
{{- $path = trim $path "/" -}}
|
||||
|
||||
{{/* Try multiple variations to find the Page */}}
|
||||
{{/* CI environment flattens everything into content root, so "private/bazel/PRD.md" becomes "bazel/PRD.md" */}}
|
||||
{{/* Map absolute paths to relative mount points */}}
|
||||
{{- $originalPath := $path -}}
|
||||
{{- $path = replace $path "/srv/docs/private/" "content/private/" -}}
|
||||
{{- $path = replace $path "/srv/configs/" "configs/" -}}
|
||||
{{- $path = strings.TrimLeft "/" $path -}}
|
||||
|
||||
{{- $isMarkdown := strings.HasSuffix (lower $path) ".md" -}}
|
||||
{{- $p := "" -}}
|
||||
{{- $variations := slice $path (printf "private/%s" $path) (replace $path "private/" "") -}}
|
||||
{{- $content := "" -}}
|
||||
{{- $found := false -}}
|
||||
|
||||
{{- range $v := $variations -}}
|
||||
{{/* 1. Try to find a Hugo Page if it's Markdown */}}
|
||||
{{- if $isMarkdown -}}
|
||||
{{- $variations := slice $path (replace $path "content/" "") (replace $path "private/" "") -}}
|
||||
{{- range $v := $variations -}}
|
||||
{{- if not $p }}{{ $p = $context.Site.GetPage $v }}{{ end -}}
|
||||
{{- if not $p }}{{ $p = $context.Site.GetPage (printf "/%s" $v) }}{{ end -}}
|
||||
{{- if not $p }}{{ $p = $context.Site.GetPage (strings.TrimSuffix ".md" $v) }}{{ end -}}
|
||||
{{- if not $p }}{{ $p = $context.Site.GetPage (lower $v) }}{{ end -}}
|
||||
{{- if not $p }}{{ $p = $context.Site.GetPage (lower (strings.TrimSuffix ".md" $v)) }}{{ end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $p -}}
|
||||
{{- $p.Content -}}
|
||||
{{- $content = $p.Content -}}
|
||||
{{- $found = true -}}
|
||||
{{- else -}}
|
||||
{{/* Fallback to readFile - check multiple path variations */}}
|
||||
{{- $found := false -}}
|
||||
{{- $content := "" -}}
|
||||
{{- $absPrivate := printf "/srv/docs/private/%s" (replace $path "private/" "") -}}
|
||||
{{- $pathsToTry := slice $path (printf "content/%s" $path) (printf "private/%s" $path) (printf "content/private/%s" $path) $absPrivate -}}
|
||||
|
||||
{{- range $pathsToTry -}}
|
||||
{{- if and (not $found) (fileExists .) -}}
|
||||
{{- $content = readFile . -}}
|
||||
{{/* 2. Fallback to readFile - check multiple path variations */}}
|
||||
{{- $pathsToTry := slice $path (printf "content/%s" $path) (printf "configs/%s" $path) -}}
|
||||
{{- range $v := $pathsToTry -}}
|
||||
{{- if and (not $found) (fileExists $v) -}}
|
||||
{{- $content = readFile $v -}}
|
||||
{{- $found = true -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- if $found -}}
|
||||
{{- if $found -}}
|
||||
{{- if $isMarkdown -}}
|
||||
{{/* Strip frontmatter if it exists */}}
|
||||
{{- if (findRE "^---" $content) -}}
|
||||
{{- $content = replaceRE "^(?s)---.*?---[\\r\\n]*" "" $content -}}
|
||||
{{- end -}}
|
||||
{{- $context.RenderString $content -}}
|
||||
{{- else -}}
|
||||
{{- warnf "Include file not found: %s" $path -}}
|
||||
<p class="text-red-500 font-bold">[Include Error: File "{{ $path }}" not found]</p>
|
||||
{{/* Output raw content for non-markdown files */}}
|
||||
{{- $content | safeHTML -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- warnf "Include file not found: %s" $originalPath -}}
|
||||
<p class="text-red-500 font-bold">[Include Error: File "{{ $originalPath }}" not found]</p>
|
||||
{{- end -}}
|
||||
|
||||
Reference in New Issue
Block a user