package main import ( "fmt" "os" "strings" "code.gitea.io/sdk/gitea" "github.com/akamensky/argparse" ) var config Configuration var Clients map[string]*gitea.Client func main() { parser := argparse.NewParser("gitivity", "Command line tool to get Gitea statistics") Times := parser.NewCommand("times", "Get a user's tracked times.") 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 { fmt.Print(parser.Usage(parse_err)) return } Clients = make(map[string]*gitea.Client) config = Configuration{} if err := config.Parse(*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) { continue } client_opts := []gitea.ClientOption{ gitea.SetToken(server.token), } client, err := gitea.NewClient(server.url, client_opts...) if err != nil { fmt.Printf("Failed to create Gitea client! (%s)\n", err) os.Exit(1) } Clients[server.servername] = client } if len(Clients) == 0 { println("No servers configured / specified") os.Exit(0) } if Times.Happened() { times() } }