slog
This commit is contained in:
@@ -4,13 +4,13 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/samber/lo"
|
||||
"golang.org/x/exp/slog"
|
||||
)
|
||||
|
||||
var mapSigs = map[string]string{
|
||||
@@ -22,18 +22,20 @@ func main() {
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if *root == "" {
|
||||
log.Fatal("please specify --root")
|
||||
}
|
||||
|
||||
log.Printf("validating: %s", *root)
|
||||
|
||||
rootFS := os.DirFS(*root)
|
||||
l := slog.New(slog.NewTextHandler(os.Stderr, nil))
|
||||
|
||||
validateMaps(lo.Must(fs.Sub(rootFS, "Maps")))
|
||||
l.Info("validating...",
|
||||
"root", *root,
|
||||
)
|
||||
|
||||
ok := validateMaps(l, lo.Must(fs.Sub(rootFS, "Maps")))
|
||||
if !ok {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func validateMaps(mapsFS fs.FS) {
|
||||
func validateMaps(l *slog.Logger, mapsFS fs.FS) bool {
|
||||
entries := lo.Must(mapsFS.(fs.ReadDirFS).ReadDir("."))
|
||||
|
||||
for _, entry := range entries {
|
||||
@@ -41,22 +43,33 @@ func validateMaps(mapsFS fs.FS) {
|
||||
continue
|
||||
}
|
||||
|
||||
log.Printf("map: %s", entry.Name())
|
||||
|
||||
mapFS := lo.Must(fs.Sub(mapsFS, entry.Name()))
|
||||
validateMap(mapFS)
|
||||
ok := validateMap(
|
||||
l.With("map", entry.Name()),
|
||||
lo.Must(fs.Sub(mapsFS, entry.Name())),
|
||||
)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func validateMap(mapFS fs.FS) {
|
||||
func validateMap(l *slog.Logger, mapFS fs.FS) bool {
|
||||
sig := getDirSig(mapFS)
|
||||
|
||||
t := mapSigs[sig]
|
||||
if t == "" {
|
||||
log.Fatalf("\tunrecognized signature: %s", sig)
|
||||
l.Error("unrecognized signature",
|
||||
"signature", sig,
|
||||
)
|
||||
return false
|
||||
}
|
||||
|
||||
log.Printf("\ttype: %s", t)
|
||||
l.Info("valid map",
|
||||
"source", t,
|
||||
)
|
||||
return true
|
||||
}
|
||||
|
||||
func getDirSig(root fs.FS) string {
|
||||
|
||||
2
go.mod
2
go.mod
@@ -4,4 +4,4 @@ go 1.20
|
||||
|
||||
require github.com/samber/lo v1.38.1
|
||||
|
||||
require golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
|
||||
require golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,4 +1,4 @@
|
||||
github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
|
||||
github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
|
||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM=
|
||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4=
|
||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
|
||||
|
||||
Reference in New Issue
Block a user