diff options
| author | Nicolas Paul <n@nc0.fr> | 2023-04-26 22:16:03 +0200 |
|---|---|---|
| committer | Nicolas Paul <n@nc0.fr> | 2023-04-26 22:16:03 +0200 |
| commit | 8ad06294d6d9c7a67a32099e31c93b4f08b9aff2 (patch) | |
| tree | 02edb46f1f283cca6df8d115c97096d97b1baae6 | |
| parent | 8f4d8fbc593dfa3dfcf4ad132d01f23cffda360c (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.go | 4 | ||||
| -rw-r--r-- | template.go | 10 | ||||
| -rw-r--r-- | transformations.go | 5 |
3 files changed, 13 insertions, 6 deletions
@@ -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 } |
