diff options
-rw-r--r-- | Dockerfile | 1 | ||||
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | config.toml | 2 | ||||
-rw-r--r-- | src/index.ts | 2 | ||||
-rw-r--r-- | templates/atom.xml | 2 | ||||
-rw-r--r-- | templates/feed-styles.html | 71 |
6 files changed, 50 insertions, 37 deletions
diff --git a/Dockerfile b/Dockerfile index 4261ce2..a455c0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -52,6 +52,7 @@ COPY --from=ssg /web/config.toml ./ COPY --from=ssg /web/content content COPY --from=ssg /web/public public +RUN make postprocess RUN make -j4 format compress # Final stage for app image diff --git a/Makefile b/Makefile index 0d658d4..d40c117 100644 --- a/Makefile +++ b/Makefile @@ -15,9 +15,16 @@ build: $(PREFIX)/index.html $(PREFIX)/index.html: config.toml $(md_files) zola build --force --output-dir $(PREFIX) +$(PREFIX)/feed-styles.xsl: $(PREFIX)/index.html + mv $(PREFIX)/feed-styles/index.html $@ + rm -fr $(PREFIX)/feed-styles + +postprocess: $(PREFIX)/feed-styles.xsl + touch .postprocessstamp + format: .formatstamp -.formatstamp: $(PREFIX)/index.html +.formatstamp: $(PREFIX)/index.html .postprocessstamp @echo "Formatting HTML..." @prettier --write --parser html --print-width 200 "$(PREFIX)/**/*.html" > /dev/null @touch .formatstamp diff --git a/config.toml b/config.toml index d2a22ad..7dbffcc 100644 --- a/config.toml +++ b/config.toml @@ -29,7 +29,7 @@ webserver_sends_csp_headers = true cache-control = "max-age=14400" x-content-type-options = "nosniff" strict-transport-security = "max-age=31536000; includeSubdomains; preload" -content-security-policy = "default-src 'none'; img-src 'self'; object-src 'none'; script-src 'none'; style-src 'unsafe-inline'; form-action 'none'; base-uri 'self'" +content-security-policy = "default-src 'none'; img-src 'self'; object-src 'none'; script-src 'self'; style-src 'unsafe-inline'; form-action 'none'; base-uri 'self'" [[extra.main_menu]] name = "Posts" diff --git a/src/index.ts b/src/index.ts index 0667115..8bdc80e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -66,7 +66,7 @@ function registerFile( filename, relPath: "/" + path, handle: handle, - type: pathname.startsWith("/feed-styles") ? "text/xsl" : handle.type, + type: pathname.startsWith("/feed-styles.xsl") ? "text/xsl" : handle.type, headers: pathname === "/404.html" ? Object.assign({}, defaultHeaders, { "cache-control": "no-cache" }) diff --git a/templates/atom.xml b/templates/atom.xml index 3fd5dee..81c9a76 100644 --- a/templates/atom.xml +++ b/templates/atom.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<?xml-stylesheet href="/feed-styles/" type="text/xsl"?> +<?xml-stylesheet href="/feed-styles.xsl" type="text/xsl"?> <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{ lang }}"> <title>{{ config.title }} {%- if term %} - {{ term.name }} diff --git a/templates/feed-styles.html b/templates/feed-styles.html index 66dac33..a66ddc0 100644 --- a/templates/feed-styles.html +++ b/templates/feed-styles.html @@ -1,55 +1,60 @@ <?xml version="1.0" encoding="utf-8"?> -<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:atom="http://www.w3.org/2005/Atom"> - <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/> +<xsl:stylesheet + version="3.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:atom="http://www.w3.org/2005/Atom" +> + <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" /> <xsl:template match="/"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> - <title> - RSS Feed | - <xsl:value-of select="/atom:feed/atom:title"/> - </title> - <meta charset="utf-8"/> - <meta http-equiv="content-type" content="text/html; charset=utf-8"/> - <meta name="viewport" content="width=device-width, initial-scale=1"/> + <title>RSS Feed | <xsl:value-of select="/atom:feed/atom:title"/></title> + <meta charset="utf-8" /> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> - {% include "style.html" ignore missing -%} + {%- include "style.css.html" ignore missing -%} </style> </head> <body> <main> <div class="helptext"> - <strong>This is an RSS feed</strong>. Subscribe by copying - the URL from the address bar into your newsreader. Visit + <strong>This is an RSS feed</strong>. Subscribe by copying the URL + from the address bar into your newsreader. Visit <a href="https://aboutfeeds.com">About Feeds</a> to learn more and get started. It's free. </div> <div> <h1> <!-- https://commons.wikimedia.org/wiki/File:Feed-icon.svg --> - <svg xmlns="http://www.w3.org/2000/svg" version="1.1" - style="width: 1.5ex; height: 1.5ex" - viewBox="0 0 256 256"> - <rect width="256" height="256" x="0" y="0" fill="#7F7F7F"/> - <rect width="246" height="246" x="5" y="5" fill="#A0A0A0"/> - <rect width="236" height="236" x="10" y="10" fill="#A6A6A6"/> - <circle cx="68" cy="189" r="24" fill="#FFF"/> + <svg + xmlns="http://www.w3.org/2000/svg" + version="1.1" + style="width: 1.5ex; height: 1.5ex" + viewBox="0 0 256 256" + > + <rect width="256" height="256" x="0" y="0" fill="#7F7F7F" /> + <rect width="246" height="246" x="5" y="5" fill="#A0A0A0" /> + <rect width="236" height="236" x="10" y="10" fill="#A6A6A6" /> + <circle cx="68" cy="189" r="24" fill="#FFF" /> <path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" - fill="#FFF"/> + fill="#FFF" + /> <path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" - fill="#FFF"/> + fill="#FFF" + /> </svg> RSS Feed Preview | <span> - <xsl:value-of select="/atom:feed/atom:title"/> + <xsl:value-of select="/atom:feed/atom:title" /> </span> </h1> <nav> <a> <xsl:attribute name="href"> - <xsl:value-of select="/atom:feed/atom:link[2]/@href"/> + <xsl:value-of select="/atom:feed/atom:link[2]/@href" /> </xsl:attribute> Visit Website </a> @@ -58,16 +63,16 @@ <xsl:for-each select="/atom:feed/atom:entry"> <li> <span> - <xsl:value-of select="substring(atom:updated, 0, 11)" /> + <time> + <xsl:value-of select="substring(atom:updated, 0, 11)" /> + </time> </span> - <div> - <a> - <xsl:attribute name="href"> - <xsl:value-of select="atom:link/@href"/> - </xsl:attribute> - <xsl:value-of select="atom:title"/> - </a> - </div> + <a> + <xsl:attribute name="href"> + <xsl:value-of select="atom:link/@href" /> + </xsl:attribute> + <xsl:value-of select="atom:title" /> + </a> </li> </xsl:for-each> </ul> |