feat(data): parse json and render simple thing
This commit is contained in:
parent
a50d678a67
commit
d25e04d8c7
7 changed files with 62 additions and 17 deletions
13
data.go
Normal file
13
data.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package main
|
||||
|
||||
type Data struct {
|
||||
Image string `json:"image"`
|
||||
Description string `json:"description"`
|
||||
Person *Person `json:"person"`
|
||||
}
|
||||
|
||||
type Person struct {
|
||||
Name string `json:"name"`
|
||||
Pronouns string `json:"pronouns"`
|
||||
Image string `json:"image"`
|
||||
}
|
0
dist/styles.css
vendored
Normal file
0
dist/styles.css
vendored
Normal file
9
example.json
Normal file
9
example.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"image": "",
|
||||
"description": "",
|
||||
"person": {
|
||||
"name": "",
|
||||
"pronouns": "",
|
||||
"image": ""
|
||||
}
|
||||
}
|
39
main.go
39
main.go
|
@ -2,41 +2,58 @@ package main
|
|||
|
||||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"github.com/anhgelus/golatt"
|
||||
"log/slog"
|
||||
"os"
|
||||
)
|
||||
|
||||
//go:embed templates
|
||||
var templates embed.FS
|
||||
|
||||
var (
|
||||
domain string
|
||||
data string
|
||||
domain string
|
||||
dataPath string
|
||||
)
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&domain, "domain", "", "domain to use")
|
||||
flag.StringVar(&data, "data", "", "data to use")
|
||||
flag.StringVar(&dataPath, "data", "", "data to use")
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
if domain == "" {
|
||||
slog.Error("Domain not set. Set it with --domain value")
|
||||
return
|
||||
domain = os.Getenv("NOW_DOMAIN")
|
||||
if domain == "" {
|
||||
slog.Error("Domain not set. Set it with --domain value or with the env NOW_DOMAIN")
|
||||
return
|
||||
}
|
||||
}
|
||||
if data == "" {
|
||||
slog.Error("Data not set. Set it with --data relative path")
|
||||
return
|
||||
if dataPath == "" {
|
||||
dataPath = os.Getenv("NOW_DATA")
|
||||
if dataPath == "" {
|
||||
slog.Error("Data not set. Set it with --data relative path or with the env NOW_DATA")
|
||||
return
|
||||
}
|
||||
}
|
||||
b, err := os.ReadFile(dataPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
var data Data
|
||||
err = json.Unmarshal(b, &data)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
g := golatt.New(templates)
|
||||
g.DefaultSeoData = &golatt.SeoData{
|
||||
Image: "",
|
||||
Description: "",
|
||||
Image: data.Image,
|
||||
Description: data.Description,
|
||||
Domain: domain,
|
||||
}
|
||||
g.Templates = append(g.Templates, "templates/page/*.gohtml")
|
||||
g.Templates = append(g.Templates, "templates/base/*.gohtml")
|
||||
|
||||
//g.StartServer(":80")
|
||||
}
|
||||
|
|
|
@ -10,13 +10,7 @@
|
|||
{{template "opengraph-base" .SEO}}
|
||||
</head>
|
||||
<body>
|
||||
{{if .Data.HasNav}}
|
||||
{{template "navbar" .}}
|
||||
{{end}}
|
||||
{{template "body" .}}
|
||||
{{if .Data.HasFooter}}
|
||||
{{template "footer" .}}
|
||||
{{end}}
|
||||
<script type="module" src="{{getAssetPath "index.js"}}" defer></script>
|
||||
</body>
|
||||
</html>
|
12
templates/page/index.gohtml
Normal file
12
templates/page/index.gohtml
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{define "body"}}
|
||||
<main>
|
||||
<div class="presentation">
|
||||
<figure>
|
||||
<img src="{{ getStaticPath .Person.Image }}" alt="{{ .Person.Name }}'s image">
|
||||
</figure>
|
||||
<h2>{{ .Person.Name }}</h2>
|
||||
<p>{{ .Person.Pronouns }}</p>
|
||||
</div>
|
||||
<p class="description">{{ .Description }}</p>
|
||||
</main>
|
||||
{{end}}
|
Loading…
Add table
Add a link
Reference in a new issue