qmk_keymaps/cmd/qmkasciigen/main.go

78 lines
1.6 KiB
Go

package main
import (
"encoding/json"
"log"
"os"
"strings"
)
func main() {
debug := strings.EqualFold(os.Getenv("DEBUG"), "true")
filenameInfo := os.Getenv("QMK_INFO")
if filenameInfo == "" {
log.Fatalln("ENV QMK_INFO empty")
}
if debug {
log.Printf("filenameInfo: [%s]\n", filenameInfo)
}
filenameKeymap := os.Getenv("QMK_KEYMAP")
if filenameKeymap == "" {
log.Fatalln("ENV QMK_KEYMAP empty")
}
if debug {
log.Printf("filenameKeymap: [%s]\n", filenameKeymap)
}
filenameOut := os.Getenv("OUT")
if debug {
log.Printf("filenameOut: [%s]\n", filenameOut)
}
postProcessTable := strings.EqualFold(os.Getenv("POST_PROCESS_TABLE"), "true")
if debug {
log.Printf("postProcessTable: [%v]\n", postProcessTable)
}
bytesInfo, err := os.ReadFile(filenameInfo)
if err != nil {
log.Fatalln("Failed to read file", filenameInfo, err)
}
bytesKeymap, err := os.ReadFile(filenameKeymap)
if err != nil {
log.Fatalln("Failed to read file", filenameKeymap, err)
}
qmkInfo := QMKInfo{}
if err := json.Unmarshal(bytesInfo, &qmkInfo); err != nil {
log.Fatalln("Failed to json unmarshal", filenameInfo, err)
}
qmkKeymap := QMKKeymap{}
if err := json.Unmarshal(bytesKeymap, &qmkKeymap); err != nil {
log.Fatalln("Failed to json unmarshal", filenameKeymap, err)
}
result := Draw(
qmkInfo.Layouts,
qmkKeymap,
DrawConfig{
Debug: debug,
PostProcessTable: postProcessTable,
},
)
if debug {
log.Printf("Result:\n%s\n", result)
}
// Optional
if filenameOut != "" {
if err := os.WriteFile(filenameOut, []byte(result), 0o600); err != nil {
log.Fatalln("Failed to write file", filenameOut, err)
}
}
}