Home

jolheiser.com @82a84f0c62b0a1dddf9e7e7e464680a002439dcb - refs - log -
-
https://git.jolheiser.com/jolheiser.com.git
my website
jolheiser.com / main.go
- raw -
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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)
	}
}