feat: add static site generation functionality

This commit is contained in:
Evrard Van Espen
2025-10-30 10:00:54 +00:00
committed by Evrard Van Espen (aider)
parent 50412cb819
commit 08c64388cf
7 changed files with 628 additions and 0 deletions

39
medias.go Normal file
View File

@@ -0,0 +1,39 @@
package main
import (
"errors"
"io/fs"
"log"
"os"
"path/filepath"
"strings"
)
// copyMedias copies media files from the posts directory to the build/medias directory.
// It creates the build/medias directory if it doesn't exist.
// It walks through the posts directory and copies all .jpg, .jpeg, .png, and .mp4 files.
// Returns any error encountered during the process.
func copyMedias() error {
if err := os.MkdirAll("build/medias", os.ModePerm); err != nil {
log.Fatal("Error creating directory:", err)
return err
}
filepath.WalkDir("posts/", func(s string, d fs.DirEntry, err error) error {
if filepath.Ext(s) == ".jpg" || filepath.Ext(s) == ".jpeg" || filepath.Ext(s) == ".png" || filepath.Ext(s) == ".mp4" {
newPath := strings.ReplaceAll(s, "posts/", "build/medias/")
if _, err := os.Stat(newPath); err == nil {
log.Println("Media", newPath, "already handled")
} else if errors.Is(err, os.ErrNotExist) {
err := os.Link(s, newPath)
if err != nil {
log.Fatal("Failed to handle media", s)
}
log.Println("Copyied media from", s, "to", newPath)
}
}
return nil
})
return nil
}