aboutsummaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go50
1 files changed, 33 insertions, 17 deletions
diff --git a/main.go b/main.go
index 4329a61..eb012a8 100644
--- a/main.go
+++ b/main.go
@@ -26,26 +26,29 @@ func addGlobalFlagUsage(fs *flag.FlagSet) func() {
}
func main() {
+ exitCode := 0
+ defer func() { os.Exit(exitCode) }()
+
+ // global flags
globalFlags := cmd.GlobalFlags{}
cmd.SetupGlobalFlags(flag.CommandLine, &globalFlags)
+ flag.Parse()
+ args := flag.Args()
- indexFs := flag.NewFlagSet("index", flag.ExitOnError)
- queryFs := flag.NewFlagSet("query", flag.ExitOnError)
+ queryFlags := cmd.QueryFlags{Outputer: query.DefaultOutput{}}
+ indexFlags := cmd.IndexFlags{}
+ serverFlags := cmd.ServerFlags{Port: 8080}
+
+ indexFs := cmd.NewIndexFlagSet(&indexFlags)
+ queryFs := cmd.NewQueryFlagSet(&queryFlags, globalFlags.DateFormat)
shellFs := flag.NewFlagSet("debug", flag.ExitOnError)
- serverFs := flag.NewFlagSet("server", flag.ExitOnError)
+ serverFs := cmd.NewServerFlagSet(&serverFlags)
completionsFs := flag.NewFlagSet("completions", flag.ContinueOnError)
// set default usage for flagsets without subcommands
shellFs.Usage = addGlobalFlagUsage(shellFs)
serverFs.Usage = addGlobalFlagUsage(serverFs)
- flag.Parse()
- args := flag.Args()
-
- queryFlags := cmd.QueryFlags{Outputer: query.DefaultOutput{}}
- indexFlags := cmd.IndexFlags{}
- serverFlags := cmd.ServerFlags{Port: 8080}
-
if len(args) < 1 {
fmt.Fprintln(os.Stderr, "No Command provided")
cmd.PrintHelp(os.Stderr)
@@ -56,11 +59,17 @@ func main() {
switch command {
case "query", "q":
- cmd.SetupQueryFlags(args[1:], queryFs, &queryFlags, globalFlags.DateFormat)
+ queryFs.Parse(args[1:])
case "index", "i":
- cmd.SetupIndexFlags(args[1:], indexFs, &indexFlags)
+ indexFs.Parse(args[1:])
+ remainingArgs := indexFs.Args()
+ if len(remainingArgs) == 0 {
+ indexFlags.Subcommand = "build"
+ } else if len(remainingArgs) == 1 {
+ indexFlags.Subcommand = remainingArgs[0]
+ }
case "server":
- cmd.SetupServerFlags(args[1:], serverFs, &serverFlags)
+ serverFs.Parse(args[1:])
case "completions":
completionsFs.Parse(args[1:])
case "help":
@@ -126,10 +135,11 @@ func main() {
logger := slog.New(logHandler)
slog.SetDefault(logger)
+ // TODO: remove later querier instances
querier := data.NewQuery(globalFlags.DBPath, VERSION)
+ defer querier.Close()
// command specific
- var exitCode int
switch command {
case "query", "q":
searchQuery := strings.Join(queryFs.Args(), " ")
@@ -140,6 +150,15 @@ func main() {
exitCode = int(cmd.RunServer(globalFlags, serverFlags, querier))
case "completions":
lang := completionsFs.Arg(0)
+ fmt.Fprintln(os.Stderr, "General Flags")
+ flag.VisitAll(func(f *flag.Flag) {
+ fmt.Fprintf(os.Stderr, "%s - %s\n", f.Name, f.Usage)
+ })
+ fmt.Fprintln(os.Stderr, "Index Flags")
+ indexFs.VisitAll(func(f *flag.Flag) {
+ fmt.Fprintf(os.Stderr, "%s - %s\n", f.Name, f.Usage)
+ })
+
switch lang {
case "zsh":
cmd.ZshCompletions()
@@ -152,7 +171,4 @@ func main() {
case "shell":
exitCode = int(cmd.RunShell(globalFlags, querier, VERSION))
}
-
- querier.Close()
- os.Exit(exitCode)
}