diff --git a/docs/content/doc/advanced/config-cheat-sheet.en-us.md b/docs/content/doc/advanced/config-cheat-sheet.en-us.md index 4dbc4c0d7c..1c327f6073 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.en-us.md +++ b/docs/content/doc/advanced/config-cheat-sheet.en-us.md @@ -359,6 +359,10 @@ IS_INPUT_FILE = false - RENDER\_COMMAND: External command to render all matching extensions. - IS\_INPUT\_FILE: **false** Input is not a standard input but a file param followed `RENDER_COMMAND`. +Two special environment variables are passed to the render command: +- `GITEA_PREFIX_SRC`, which contains the current URL prefix in the `src` path tree. To be used as prefix for links. +- `GITEA_PREFIX_RAW`, which contains the current URL prefix in the `raw` path tree. To be used as prefix for image paths. + ## Other (`other`) - `SHOW_FOOTER_BRANDING`: **false**: Show Gitea branding in the footer. diff --git a/modules/markup/external/external.go b/modules/markup/external/external.go index 676ec4b4c5..73bf7a327e 100644 --- a/modules/markup/external/external.go +++ b/modules/markup/external/external.go @@ -76,6 +76,11 @@ func (p *Parser) Render(rawBytes []byte, urlPrefix string, metas map[string]stri } cmd := exec.Command(commands[0], args...) + cmd.Env = append( + os.Environ(), + "GITEA_PREFIX_SRC="+urlPrefix, + "GITEA_PREFIX_RAW="+strings.Replace(urlPrefix, "/src/", "/raw/", 1), + ) if !p.IsInputFile { cmd.Stdin = rd }