summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Paul <n@nc0.fr>2023-04-26 22:16:03 +0200
committerNicolas Paul <n@nc0.fr>2023-04-26 22:16:03 +0200
commit8ad06294d6d9c7a67a32099e31c93b4f08b9aff2 (patch)
tree02edb46f1f283cca6df8d115c97096d97b1baae6
parent8f4d8fbc593dfa3dfcf4ad132d01f23cffda360c (diff)
Fix missing outdir bug
crocc was not creating the output directory if it was not present, making it impossible to generate files
-rw-r--r--crocc.go4
-rw-r--r--template.go10
-rw-r--r--transformations.go5
3 files changed, 13 insertions, 6 deletions
diff --git a/crocc.go b/crocc.go
index 4e6d48d..266b816 100644
--- a/crocc.go
+++ b/crocc.go
@@ -81,6 +81,10 @@ func main() {
// Check output directory
if _, err := os.Stat(*out); !os.IsNotExist(err) {
log.Fatalf("output directory %q already exists", *out)
+ } else {
+ if err := os.MkdirAll(*out, 0755); err != nil {
+ log.Fatalf("unable to create output directory %q: %v", *out, err)
+ }
}
// Retrieve template file
diff --git a/template.go b/template.go
index ff6aeac..1fa243b 100644
--- a/template.go
+++ b/template.go
@@ -5,8 +5,8 @@
package main
import (
+ "bytes"
"fmt"
- "io"
"time"
)
@@ -24,8 +24,10 @@ type TemplateData struct {
}
// GenerateHTML generates the HTML file from the Markdown document.
-func GenerateHTML(file io.Writer, fm FrontMatter, content string) error {
- return htmlTemplate.Execute(file, TemplateData{
+func GenerateHTML(fm FrontMatter, content string) ([]byte, error) {
+ var buffer bytes.Buffer
+
+ err := htmlTemplate.Execute(&buffer, TemplateData{
Title: fm.Title,
Description: fm.Description,
PublicationTime: fm.PublicationTime.Format(time.RFC3339),
@@ -36,4 +38,6 @@ func GenerateHTML(file io.Writer, fm FrontMatter, content string) error {
Site: *url,
Generator: fmt.Sprintf("crocc %s (https://crocc.nc0.fr)", version),
})
+
+ return buffer.Bytes(), err
}
diff --git a/transformations.go b/transformations.go
index 7053a94..ddf259d 100644
--- a/transformations.go
+++ b/transformations.go
@@ -90,13 +90,12 @@ func TransformMarkdownFile(inputDir, inputFile, outputDir string) error {
renderer := html.NewRenderer(html.RendererOptions{Flags: htmlFlags})
contentHTML := markdown.Render(doc, renderer)
- outputFile, err := os.Create(outputPath)
+ c, err := GenerateHTML(fm, string(contentHTML))
if err != nil {
return err
}
- defer outputFile.Close()
- if err := GenerateHTML(outputFile, fm, string(contentHTML)); err != nil {
+ if err := os.WriteFile(outputPath, c, 0666); err != nil {
return err
}