67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"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 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(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)
|
|
}
|
|
}
|