create project
This commit is contained in:
74
cmd/scriptgen/main.go
Normal file
74
cmd/scriptgen/main.go
Normal file
@ -0,0 +1,74 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
const (
|
||||
zh_CN = "zh_CN"
|
||||
en_US = "en_US"
|
||||
)
|
||||
|
||||
var localeMap map[string]map[string]interface{}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) != 3 {
|
||||
printUsage()
|
||||
exitWithError("Error: Need exactly 2 arguments")
|
||||
}
|
||||
|
||||
if err := readLocalesFromFile(os.Args[1]); err != nil {
|
||||
exitWithError(fmt.Sprintf("readLocalesFromFile: %v", err))
|
||||
}
|
||||
|
||||
if err := parseTemplate(os.Args[2]); err != nil {
|
||||
exitWithError(fmt.Sprintf("parseTemplate: %v", err))
|
||||
}
|
||||
}
|
||||
|
||||
func printUsage() {
|
||||
fmt.Printf("usage: %s [locale-file] [locale]\n", os.Args[0])
|
||||
}
|
||||
|
||||
func exitWithError(message string) {
|
||||
fmt.Fprintln(os.Stderr, message)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func readLocalesFromFile(file string) error {
|
||||
b, err := os.ReadFile(file)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return json.Unmarshal(b, &localeMap)
|
||||
}
|
||||
|
||||
func parseTemplate(lang string) error {
|
||||
tmpl, err := template.ParseFiles("template.sh")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch lang {
|
||||
case zh_CN:
|
||||
file, err := os.Create("install.sh")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return tmpl.Execute(file, localeMap[zh_CN])
|
||||
case en_US:
|
||||
file, err := os.Create("install_en.sh")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
return tmpl.Execute(file, localeMap[en_US])
|
||||
default:
|
||||
return fmt.Errorf("unsupported locale: %s", lang)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user