Files
mcp/cmd/indexer/main.go
T

56 lines
1.3 KiB
Go
Raw Permalink Normal View History

// Command indexer walks an Einherjar repository checkout, parses every
// sibling module, and writes the resulting framework knowledge index to
// data/index.json (or the path given by -out).
//
// Usage:
//
// go run ./cmd/indexer .. # default output: data/index.json
// go run ./cmd/indexer -out idx.json /path/to/einherjar
package main
import (
"encoding/json"
"flag"
"fmt"
"os"
"code.nochebuena.dev/einherjar/mcp/internal/index"
)
func main() {
out := flag.String("out", "data/index.json", "output path for the generated index")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "usage: indexer [-out path] <einherjar-repo-root>\n")
flag.PrintDefaults()
}
flag.Parse()
root := flag.Arg(0)
if root == "" {
root = ".."
}
idx, err := index.Build(root)
if err != nil {
fmt.Fprintf(os.Stderr, "indexer: %v\n", err)
os.Exit(1)
}
idx.Modules = append(idx.Modules, index.BuildBuiltins())
f, err := os.Create(*out)
if err != nil {
fmt.Fprintf(os.Stderr, "indexer: %v\n", err)
os.Exit(1)
}
defer f.Close()
enc := json.NewEncoder(f)
enc.SetIndent("", " ")
if err := enc.Encode(idx); err != nil {
fmt.Fprintf(os.Stderr, "indexer: encode: %v\n", err)
os.Exit(1)
}
fmt.Fprintf(os.Stderr, "indexer: wrote %s (%d modules)\n", *out, len(idx.Modules))
}