From 344c6526a8d6f490fc7628ddc7d2dd06ed1a07c1 Mon Sep 17 00:00:00 2001 From: JP Appel Date: Tue, 22 Jul 2025 15:41:03 -0400 Subject: Separate program entry point from commands --- cmd/cmd.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 cmd/cmd.go (limited to 'cmd/cmd.go') diff --git a/cmd/cmd.go b/cmd/cmd.go new file mode 100644 index 0000000..5a4f942 --- /dev/null +++ b/cmd/cmd.go @@ -0,0 +1,44 @@ +package cmd + +import ( + "errors" + "flag" + "io/fs" + "os" + "runtime" + "strings" + "time" + + "github.com/adrg/xdg" +) + +type GlobalFlags struct { + IndexRoot string + DBPath string + LogLevel string + LogJson bool + NumWorkers uint + DateFormat string + LogFile string +} + +func SetupGlobalFlags(fs_ *flag.FlagSet, flags *GlobalFlags) { + home, _ := os.UserHomeDir() + dataHome := xdg.DataHome + if dataHome == "" { + dataHome = strings.Join([]string{home, ".local", "share"}, string(os.PathSeparator)) + } + dataHome += string(os.PathSeparator) + "atlas" + if err := os.Mkdir(dataHome, 0755); errors.Is(err, fs.ErrExist) { + } else if err != nil { + panic(err) + } + + flag.StringVar(&flags.IndexRoot, "root", xdg.UserDirs.Documents, "root `directory` for indexing") + flag.StringVar(&flags.DBPath, "db", dataHome+string(os.PathSeparator)+"default.db", "`path` to document database") + flag.StringVar(&flags.LogLevel, "logLevel", "error", "set log `level` (debug, info, warn, error)") + flag.BoolVar(&flags.LogJson, "logJson", false, "log to json") + flag.UintVar(&flags.NumWorkers, "numWorkers", uint(runtime.NumCPU()), "number of worker threads to use (defaults to core count)") + flag.StringVar(&flags.DateFormat, "dateFormat", time.RFC3339, "`format` for dates (see https://pkg.go.dev/time#Layout for more details)") + flag.StringVar(&flags.LogFile, "logFile", "", "`file` to log errors to, use '-' for stdout and empty for stderr") +} -- cgit v1.2.3