summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Dockerfile1
-rw-r--r--Makefile9
-rw-r--r--config.toml2
-rw-r--r--src/index.ts2
-rw-r--r--templates/atom.xml2
-rw-r--r--templates/feed-styles.html71
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>