github.com/secoba/wails/v2@v2.6.4/pkg/menu/colours/colours.go (about) 1 package main 2 3 import ( 4 "bytes" 5 _ "embed" 6 "encoding/json" 7 "io" 8 "log" 9 "net/http" 10 "os" 11 "path/filepath" 12 "text/template" 13 ) 14 15 type Rgb struct { 16 R uint8 `json:"r"` 17 G uint8 `json:"g"` 18 B uint8 `json:"b"` 19 } 20 21 type Hsl struct { 22 H float64 `json:"h"` 23 S float64 `json:"s"` 24 L float64 `json:"l"` 25 } 26 27 type InputCol struct { 28 Colorid uint8 `json:"colorId"` 29 Hexstring string `json:"hexString"` 30 Rgb Rgb `json:"rgb"` 31 Hsl Hsl `json:"hsl"` 32 Name string `json:"name"` 33 } 34 35 //go:embed gen.tmpl 36 var Template string 37 38 func main() { 39 var Cols []InputCol 40 41 resp, err := http.Get("https://jonasjacek.github.io/colors/data.json") 42 if err != nil { 43 log.Fatal(err) 44 } 45 defer resp.Body.Close() 46 data, err := io.ReadAll(resp.Body) 47 if err != nil { 48 log.Fatal(err) 49 } 50 err = json.Unmarshal(data, &Cols) 51 if err != nil { 52 log.Fatal(err) 53 } 54 55 t, err := template.New("cols").Parse(Template) 56 if err != nil { 57 log.Fatal(err) 58 } 59 var buffer bytes.Buffer 60 err = t.Execute(&buffer, Cols) 61 if err != nil { 62 log.Fatal(err) 63 } 64 err = os.WriteFile(filepath.Join("..", "cols.go"), buffer.Bytes(), 0o755) 65 if err != nil { 66 log.Fatal(err) 67 } 68 }