aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/atlas.go
blob: cbc21d4bb54f25312b2edab1eba8d2bb616836fd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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)
	}
}