52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
package main // import "git.fromouter.space/mcg/mlp-server-tools/tools/buildmap"
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"flag"
|
||
|
"log"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
|
||
|
"golang.org/x/sys/windows/registry"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
doc := getDocumentDir()
|
||
|
defaultSetPath := filepath.Join(doc, "OCTGN", "GameDatabase", "65656467-b709-43b2-a5c6-80c2f216adf9", "Sets")
|
||
|
setpath := flag.String("set-path", defaultSetPath, "Path to sets")
|
||
|
reverse := flag.Bool("reverse", false, "Reverse mapping (GUID->ID)")
|
||
|
format := flag.Bool("format", false, "Format the output")
|
||
|
tolc := flag.Bool("lowercase", false, "Convert IDs to lowercase (for better ponyhead compatibility)")
|
||
|
flag.Parse()
|
||
|
|
||
|
// Load sets
|
||
|
sets, err := loadSets(*setpath)
|
||
|
if err != nil {
|
||
|
log.Fatalf("Could not load all sets: %s\nClosing...\n", err.Error())
|
||
|
}
|
||
|
|
||
|
cmap := buildMap(sets, *reverse, *tolc)
|
||
|
enc := json.NewEncoder(os.Stdout)
|
||
|
if *format {
|
||
|
enc.SetIndent("", " ")
|
||
|
}
|
||
|
err = enc.Encode(cmap)
|
||
|
if err != nil {
|
||
|
log.Fatalf("Error while encoding to JSON: %s\n", err.Error())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func getDocumentDir() string {
|
||
|
k, err := registry.OpenKey(registry.CURRENT_USER, `SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders`, registry.QUERY_VALUE)
|
||
|
if err != nil {
|
||
|
return ""
|
||
|
}
|
||
|
defer k.Close()
|
||
|
|
||
|
s, _, err := k.GetStringValue("Personal")
|
||
|
if err != nil {
|
||
|
return ""
|
||
|
}
|
||
|
return s
|
||
|
}
|