From e5b3edb460eaea2dfa03a494262bfb12e11c01b8 Mon Sep 17 00:00:00 2001 From: Noah Date: Sun, 7 Apr 2024 13:11:48 -0500 Subject: [PATCH] Re-structure command / option / flag handling (fix #14) --- main.go | 32 ++++++++++++++++++++++++++++---- times.go | 2 +- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 9efa664..1572921 100644 --- a/main.go +++ b/main.go @@ -9,16 +9,40 @@ import ( "github.com/akamensky/argparse" ) +// Arguments is a place to store arguments / options / flags passed from the command line. +type Arguments struct { + Times struct { + } + Summary struct { + } + Feed struct { + } + global struct { + config_path *string + server *string + } +} + +var arguments Arguments var config Configuration var Servers map[string]*gitea.Client func main() { parser := argparse.NewParser("gitivity", "Command line tool to get Gitea statistics") + arguments.global.config_path = parser.String("c", "config", &argparse.Options{ + Required: false, + Help: "Configuration file", + Default: "./config.lua", + }) + arguments.global.server = parser.String("s", "server", &argparse.Options{ + Required: false, + Help: "Specific server to use", + }) + Times := parser.NewCommand("times", "Get a user's tracked times.") + Times.Flag("t", "today", &argparse.Options{}) Summary := parser.NewCommand("summary", "Display a summary of a user's activity.") Feed := parser.NewCommand("feed", "Display the user's activity feed.") - config_path := parser.String("c", "config", &argparse.Options{Required: false, Help: "Configuration file", Default: "./config.lua"}) - server_option := parser.String("s", "server", &argparse.Options{Required: false, Help: "Specific server to use"}) parse_err := parser.Parse(os.Args) if parse_err != nil { @@ -28,12 +52,12 @@ func main() { config = Configuration{} Servers = make(map[string]*gitea.Client) - if err := config.Parse(*config_path); err != nil { + if err := config.Parse(*arguments.global.config_path); err != nil { panic("Failed to parse configuration file") } for _, server := range config.servers { - if *server_option != "" && strings.ToLower(server.servername) != strings.ToLower(*server_option) { + if *arguments.global.server != "" && strings.ToLower(server.servername) != strings.ToLower(*arguments.global.server) { continue } client_opts := []gitea.ClientOption{ diff --git a/times.go b/times.go index 362da7a..394a2cb 100644 --- a/times.go +++ b/times.go @@ -26,7 +26,7 @@ func times() { } }() - since := time.Now().AddDate(0, -1, 0) + since := time.Now().AddDate(0, -6, 0) times := getTimeLogs(since, func(repo gitea.Repository, took time.Duration) { p.Send(IndicatorInfo{ info: fmt.Sprintf("%s / %s", repo.Owner.UserName, repo.Name),