From fe28c50762d9d0d4c3461be361357e35e6bda539 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Thu, 26 Feb 2026 06:06:28 -0500 Subject: [PATCH] feat(go-analyzer): add CLI entry point --- tools/go-analyzer/main.go | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tools/go-analyzer/main.go diff --git a/tools/go-analyzer/main.go b/tools/go-analyzer/main.go new file mode 100644 index 0000000..22f29a0 --- /dev/null +++ b/tools/go-analyzer/main.go @@ -0,0 +1,48 @@ +package main + +import ( + "flag" + "fmt" + "log" + "os" +) + +func main() { + sourceDir := flag.String("source", "", "Path to Go source root (e.g., ../../golang/nats-server)") + dbPath := flag.String("db", "", "Path to SQLite database file (e.g., ../../porting.db)") + schemaPath := flag.String("schema", "", "Path to SQL schema file (e.g., ../../porting-schema.sql)") + flag.Parse() + + if *sourceDir == "" || *dbPath == "" || *schemaPath == "" { + fmt.Fprintf(os.Stderr, "Usage: go-analyzer --source --db --schema \n") + flag.PrintDefaults() + os.Exit(1) + } + + // Open DB and apply schema + db, err := OpenDB(*dbPath, *schemaPath) + if err != nil { + log.Fatalf("Failed to open database: %v", err) + } + defer db.Close() + + // Run analysis + analyzer := NewAnalyzer(*sourceDir) + result, err := analyzer.Analyze() + if err != nil { + log.Fatalf("Analysis failed: %v", err) + } + + // Write to DB + writer := NewDBWriter(db) + if err := writer.WriteAll(result); err != nil { + log.Fatalf("Failed to write results: %v", err) + } + + fmt.Printf("Analysis complete:\n") + fmt.Printf(" Modules: %d\n", len(result.Modules)) + fmt.Printf(" Features: %d\n", result.TotalFeatures()) + fmt.Printf(" Unit Tests: %d\n", result.TotalTests()) + fmt.Printf(" Dependencies: %d\n", len(result.Dependencies)) + fmt.Printf(" Imports: %d\n", len(result.Imports)) +}