piekarnikgosipl/main.go
2026-05-27 15:08:20 +02:00

89 lines
1.8 KiB
Go

package main
import (
"context"
"fmt"
"io"
"log"
"net/http"
"os"
"piekarnikgosi/resources"
"piekarnikgosi/templates"
)
type ComponentRenderer interface {
Render(ctx context.Context, w io.Writer) error
}
func saveFile(name string, comp ComponentRenderer) {
file, err := os.Create("www/" + name + ".html")
if err != nil {
log.Fatal(err)
}
defer file.Close()
err = comp.Render(context.Background(), file)
if err != nil {
log.Fatal(err)
}
}
func generateHTML() {
log.Println("generating html")
saveFile(`index`, templates.Index())
saveFile(`kawiarnia`, templates.Kawiarnia())
saveFile(`portfolio`, templates.Portfolio())
saveFile(`wyroby`, templates.WyrobyCiasta(resources.Cakes))
saveFile(`wyroby_torty`, templates.WyrobyTorty())
saveFile(`wyroby_slodkie_stoly`, templates.WyrobySlodkieStoly())
saveFile(`wyroby_lody`, templates.WyrobyLody())
}
func mergeStyles() {
log.Println("generating css")
cssFiles := []string{
"normalize.css",
"base.css",
"components.css",
"home.css",
"layout.css",
"wyroby.css",
"wyroby_torty.css",
"wyroby_slodkie_stoly.css",
"wyroby_lody.css",
"portfolio.css",
"kawiarnia.css",
}
var bundledCSS []byte
for _, fileName := range cssFiles {
filePath := fmt.Sprint("templates/styles/", fileName)
content, err := os.ReadFile(filePath)
if err != nil {
log.Fatal(err)
}
bundledCSS = append(bundledCSS, content...)
bundledCSS = append(bundledCSS, '\n')
}
err := os.WriteFile("www/style.css", bundledCSS, 0644)
if err != nil {
log.Fatal(err)
}
}
func ensureDir() {
log.Println("creating directories")
err := os.MkdirAll("www/styles", 0644)
if err != nil {
log.Fatal(err)
}
}
func main() {
ensureDir()
generateHTML()
mergeStyles()
log.Println("listening on :8000")
log.Fatal(http.ListenAndServe(":8000", http.FileServer(http.Dir("www"))))
}