mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-09-05 15:46:37 +08:00
fix: format the generated i18n keys
This commit is contained in:
+20
-10
@@ -3,8 +3,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"bytes"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"go/format"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -54,14 +56,9 @@ func main() {
|
|||||||
}
|
}
|
||||||
sort.Strings(list)
|
sort.Strings(list)
|
||||||
|
|
||||||
f, err := os.Create(*out)
|
// Generate code to buffer
|
||||||
if err != nil {
|
var buf bytes.Buffer
|
||||||
fmt.Fprintf(os.Stderr, "Error creating output file: %v\n", err)
|
w := bufio.NewWriter(&buf)
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
|
|
||||||
w := bufio.NewWriter(f)
|
|
||||||
fmt.Fprintf(w, "// Code generated by cmd/geni18n. DO NOT EDIT.\n")
|
fmt.Fprintf(w, "// Code generated by cmd/geni18n. DO NOT EDIT.\n")
|
||||||
fmt.Fprintf(w, "package %s\n\n", *pkg)
|
fmt.Fprintf(w, "package %s\n\n", *pkg)
|
||||||
fmt.Fprintf(w, "type Key string\n\n")
|
fmt.Fprintf(w, "type Key string\n\n")
|
||||||
@@ -72,16 +69,29 @@ func main() {
|
|||||||
}
|
}
|
||||||
fmt.Fprintf(w, ")\n")
|
fmt.Fprintf(w, ")\n")
|
||||||
w.Flush()
|
w.Flush()
|
||||||
|
|
||||||
|
// Format the generated code
|
||||||
|
formatted, err := format.Source(buf.Bytes())
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Warning: failed to format generated code: %v\n", err)
|
||||||
|
formatted = buf.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
func collectKeys(node map[string]interface{}, prefix string, keys map[string]struct{}) {
|
// Write to output file
|
||||||
|
if err := os.WriteFile(*out, formatted, 0644); err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "Error writing output file: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func collectKeys(node map[string]any, prefix string, keys map[string]struct{}) {
|
||||||
for k, v := range node {
|
for k, v := range node {
|
||||||
fullKey := k
|
fullKey := k
|
||||||
if prefix != "" {
|
if prefix != "" {
|
||||||
fullKey = prefix + "." + k
|
fullKey = prefix + "." + k
|
||||||
}
|
}
|
||||||
switch val := v.(type) {
|
switch val := v.(type) {
|
||||||
case map[string]interface{}:
|
case map[string]any:
|
||||||
collectKeys(val, fullKey, keys)
|
collectKeys(val, fullKey, keys)
|
||||||
default:
|
default:
|
||||||
keys[fullKey] = struct{}{}
|
keys[fullKey] = struct{}{}
|
||||||
|
|||||||
Reference in New Issue
Block a user