39 lines
1.0 KiB
Go
39 lines
1.0 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"flag"
|
||
|
|
"log"
|
||
|
|
"os"
|
||
|
|
)
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
contentDir := flag.String("content", "./content", "directory containing images and .toml sidecars")
|
||
|
|
outputDir := flag.String("output", "./public", "directory for generated site output")
|
||
|
|
baseURL := flag.String("base-url", "http://localhost:8080", "public base URL, no trailing slash")
|
||
|
|
port := flag.String("port", "8080", "port to listen on")
|
||
|
|
serve := flag.Bool("serve", false, "serve the generated site on the same port (for local development)")
|
||
|
|
flag.Parse()
|
||
|
|
|
||
|
|
for _, d := range []string{*contentDir, *outputDir} {
|
||
|
|
if err := os.MkdirAll(d, 0755); err != nil {
|
||
|
|
log.Fatalf("mkdir %s: %v", d, err)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
g := NewGenerator(*contentDir, *outputDir, *baseURL)
|
||
|
|
|
||
|
|
if err := g.Build(); err != nil {
|
||
|
|
log.Printf("initial build: %v", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
w, err := NewWatcher(*contentDir, g)
|
||
|
|
if err != nil {
|
||
|
|
log.Fatalf("watcher: %v", err)
|
||
|
|
}
|
||
|
|
defer w.Close()
|
||
|
|
go w.Watch()
|
||
|
|
|
||
|
|
s := NewServer(*port, *contentDir, *outputDir, *serve, g)
|
||
|
|
log.Fatal(s.Listen())
|
||
|
|
}
|