mt-multiserver-proxy/gen_textures.go

63 lines
1.3 KiB
Go

//go:build ignore
// gen_textures generates default_textures.go. It can be invoked
// by running go generate.
package main
import (
"crypto/sha1"
"encoding/base64"
"encoding/hex"
"fmt"
"os"
"strings"
)
var b64 = base64.StdEncoding
func main() {
f, err := os.OpenFile("default_textures.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer f.Close()
f.WriteString("// Code generated by gen_textures.go. DO NOT EDIT.\n")
f.WriteString("package proxy\n")
f.WriteString("\n")
f.WriteString("var defaultTextures = []mediaFile{\n")
dir, err := os.ReadDir("textures")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, file := range dir {
name := file.Name()
data, err := os.ReadFile("textures/" + name)
if err != nil {
fmt.Println(err)
continue
}
sum := sha1.Sum(data)
f.WriteString("\tmediaFile{\n")
f.WriteString("\t\tname: \"" + name + "\",\n")
f.WriteString("\t\tbase64SHA1: \"" + b64.EncodeToString(sum[:]) + "\",\n")
f.WriteString("\t\tdata: []byte{")
var strs []string
for _, b := range data {
strs = append(strs, "0x"+hex.EncodeToString([]byte{b}))
}
f.WriteString(strings.Join(strs, ", ") + "},\n")
f.WriteString("\t},\n")
}
f.WriteString("}\n")
}