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  }