aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Picciano <me@mediocregopher.com>2024-07-04 12:33:45 +0200
committerBrian Picciano <me@mediocregopher.com>2024-07-04 12:33:45 +0200
commit4291fc5f1c992a499fbc82decc3fe8090d4dff68 (patch)
tree2516d5245bf35ae5f99b69a84a72280bb02ff3e9
parent8d0b8d388b31050468362710078feb39ece802ed (diff)
Improve and clean up the example config for templates
-rw-r--r--example/Caddyfile36
-rw-r--r--example/static/gemtext/cheatsheet.gmi (renamed from example/static/cheatsheet.gmi)0
-rw-r--r--example/static/gemtext/index.gmi5
-rw-r--r--example/static/index.html9
-rw-r--r--example/tpl/render_gemtext.html7
5 files changed, 41 insertions, 16 deletions
diff --git a/example/Caddyfile b/example/Caddyfile
index aa12136..8d9dd50 100644
--- a/example/Caddyfile
+++ b/example/Caddyfile
@@ -8,22 +8,36 @@
http://template.localhost {
root example/static
- # If the path exists in the static directory then serve it directly
- @static file {path} {path}/
- route @static {
- file_server
- }
+ # If a directory has an index.gmi file, then that file will be served when
+ # the directory is requested.
+ try_files {path} {path}/index.gmi
+
+ @gmi path_regexp \.gmi$
+
+ # Handle all requests for .gmi files specially.
+ route @gmi {
- # Otherwise send it through the template, which will look for a matching gmi
- # file to render.
- route {
- rewrite * /tpl/render_gemtext.html
- root example
templates {
+ # The templates directive is given a different root, so that other
+ # template snippets within the tpl directory could theoretically be
+ # used within render_gemtext.html.
+ root example
+
+ # Include the gemtext extention to make the gemtext function
+ # available within the template.
extensions {
gemtext
}
}
- file_server
+
+ # We "respond" with a template body here, which will be processed by the
+ # templates directive above. This body simply imports the template we
+ # actually want. Setting Content-Type is required because there's no
+ # actual file for Caddy to determine the value from.
+ header Content-Type text/html
+ respond `{{ include "tpl/render_gemtext.html" }}`
}
+
+ # All other files are handled directly by the file_server.
+ file_server
}
diff --git a/example/static/cheatsheet.gmi b/example/static/gemtext/cheatsheet.gmi
index e7c9286..e7c9286 100644
--- a/example/static/cheatsheet.gmi
+++ b/example/static/gemtext/cheatsheet.gmi
diff --git a/example/static/gemtext/index.gmi b/example/static/gemtext/index.gmi
new file mode 100644
index 0000000..9ff3d82
--- /dev/null
+++ b/example/static/gemtext/index.gmi
@@ -0,0 +1,5 @@
+# Gemtext Directory Index
+
+This is the index of the gemtext directory. In here are various gemtext files useful for testing.
+
+=> cheatsheet.gmi Gemtext cheatsheet
diff --git a/example/static/index.html b/example/static/index.html
index db924d5..7badec1 100644
--- a/example/static/index.html
+++ b/example/static/index.html
@@ -1,11 +1,18 @@
<html>
<head>
<title>Root Index</title>
+ <link rel="stylesheet" type="text/css" href="/bamboo.css" />
</head>
<body>
<h1>Root Index</h1>
<p>
- This is the root page of the example site.
+ This is the root page of the example site. From here you can explore the
+ various files useful for testing and exploring the functionality of the
+ plugins in this project.
</p>
+ <ul>
+ <li><a href="gemtext/">Gemtext files</a></li>
+ <li><a href="empty/">An empty directory, should 404</a></li>
+ </ul>
</body>
</html>
diff --git a/example/tpl/render_gemtext.html b/example/tpl/render_gemtext.html
index 0cfdec6..34a8c7c 100644
--- a/example/tpl/render_gemtext.html
+++ b/example/tpl/render_gemtext.html
@@ -1,7 +1,6 @@
-{{ $pathSplit := splitList "/" .OriginalReq.URL.Path }}
-{{ $base := last $pathSplit | default "index.html" }}
-{{ $newBase := trimSuffix (ext $base) $base | printf "%s.gmi" }}
-{{ $filePath := append (initial $pathSplit) $newBase | join "/" | printf "static%s" }}
+{{ $pathSplit := splitList "/" .Req.URL.Path }}
+{{ $base := last $pathSplit | default "index.gmi" }}
+{{ $filePath := append (initial $pathSplit) $base | join "/" | printf "static%s" }}
{{ if not (fileExists $filePath) }}{{ httpError 404 }}{{ end }}
<!DOCTYPE html>
<html>