diff options
| author | JP Appel <jeanpierre.appel01@gmail.com> | 2025-04-27 00:49:27 -0400 |
|---|---|---|
| committer | JP Appel <jeanpierre.appel01@gmail.com> | 2025-04-27 00:49:27 -0400 |
| commit | 34b8d8ff1f9d65c08a9156d72f08cf548183c6f4 (patch) | |
| tree | a00fa0410a7bcde125a37b50b3a4956c838fa569 /cmd/atlas.go | |
| parent | 42527fdb0aca0d30652bb3052b80ab75ab057572 (diff) | |
Large commit; many features
Diffstat (limited to 'cmd/atlas.go')
| -rw-r--r-- | cmd/atlas.go | 62 |
1 files changed, 62 insertions, 0 deletions
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) + } +} |
