From 34b8d8ff1f9d65c08a9156d72f08cf548183c6f4 Mon Sep 17 00:00:00 2001 From: JP Appel Date: Sun, 27 Apr 2025 00:49:27 -0400 Subject: Large commit; many features --- cmd/atlas.go | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 cmd/atlas.go (limited to 'cmd/atlas.go') diff --git a/cmd/atlas.go b/cmd/atlas.go new file mode 100644 index 0000000..cbc21d4 --- /dev/null +++ b/cmd/atlas.go @@ -0,0 +1,62 @@ +package main + +import ( + "flag" + "fmt" + "log/slog" + "os" + + "github.com/jpappel/atlas/pkg/data" + "github.com/jpappel/atlas/pkg/index" +) + +const ExitCommand = 2 // exit because of a command parsing error + +var commands = []string{"query", "index", "version", "help"} + +func main() { + // global opts + indexRoot := flag.String("root", "/home/goose/src/atlas/test", "root directory for indexing") + docDB := flag.String("db", "/home/goose/src/atlas/test.db", "path to document database") + logLevel := flag.String("logLevel", "error", "set log level (debug, info, warn, error)") + + // command specific opts + // TODO: parse a list of fitlers + docFilters := index.DefaultFilters() + + flag.Parse() + + slogLevel := &slog.LevelVar{} + if *logLevel == "debug" { + slogLevel.Set(slog.LevelDebug) + } else if *logLevel == "info" { + slogLevel.Set(slog.LevelInfo) + } else if *logLevel == "warn" { + slogLevel.Set(slog.LevelWarn) + } else if *logLevel == "error" { + slogLevel.Set(slog.LevelError) + } else { + fmt.Fprintln(os.Stderr, "Unrecognized log level:", *logLevel) + os.Exit(ExitCommand) + } + loggerOpts := &slog.HandlerOptions{Level: slogLevel} + logger := slog.New(slog.NewTextHandler(os.Stderr, loggerOpts)) + slog.SetDefault(logger) + + query := data.NewQuery(*docDB) + defer query.Close() + + idx := index.Index{Root: *indexRoot, Filters: docFilters} + fmt.Println("index:", idx) + + traversedFiles := idx.Traverse(4) + fmt.Println("traversed files:", traversedFiles) + + filteredFiles := idx.Filter(traversedFiles, 4) + fmt.Println("filtered files:", filteredFiles) + + fmt.Println("Putting index") + if err := query.Put(idx); err != nil { + panic(err) + } +} -- cgit v1.2.3