package main import ( "context" "encoding/json" "os" "git.jojodev.com/jolheiser/simpleicons" "github.com/google/go-jsonnet" ) type Link struct { Name string `json:"name"` URL string `json:"url"` IconName string `json:"icon"` } func (l Link) Icon() simpleicons.Icon { return simpleicons.Icons[l.IconName] } var tailwindCSS = ` @tailwind base; @tailwind components; @tailwind utilities; ` //go:generate templ generate //go:generate go run . //go:generate tailwind-ctp -i ./dist/styles.css -o ./dist/styles.css --minify func main() { var links struct { Links []Link `json:"links"` } vm := jsonnet.MakeVM() data, err := vm.EvaluateFile("links.jsonnet") if err != nil { panic(err) } if err := json.Unmarshal([]byte(data), &links); err != nil { panic(err) } if err := os.MkdirAll("dist", os.ModePerm); err != nil { panic(err) } html, err := os.Create("dist/index.html") if err != nil { panic(err) } defer html.Close() err = index(links.Links).Render(context.Background(), html) if err != nil { panic(err) } css, err := os.Create("dist/styles.css") if err != nil { panic(err) } defer css.Close() if _, err := css.WriteString(tailwindCSS); err != nil { panic(err) } }