// 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] \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)) }