Re-structure command / option / flag handling (fix #14)
This commit is contained in:
parent
2a8f2e46d3
commit
e5b3edb460
32
main.go
32
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{
|
||||
|
Loading…
Reference in New Issue
Block a user