From d0443659123f912e9385e27efebe4b7da65aa2f6 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Thu, 12 Jul 2018 09:55:13 +0200 Subject: more experiment --- git-bug.go | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 2 deletions(-) (limited to 'git-bug.go') diff --git a/git-bug.go b/git-bug.go index e82fdf42..08d9d04a 100644 --- a/git-bug.go +++ b/git-bug.go @@ -1,7 +1,75 @@ package main -import "fmt" +import ( + "fmt" + "os" + "sort" + "strings" + "github.com/MichaelMure/git-bug/repository" + "github.com/MichaelMure/git-bug/commands" +) + +const usageMessageTemplate = `Usage: %s + +Where is one of: + %s + +For individual command usage, run: + %s help +` + +func usage() { + command := os.Args[0] + var subcommands []string + for subcommand := range commands.CommandMap { + subcommands = append(subcommands, subcommand) + } + sort.Strings(subcommands) + fmt.Printf(usageMessageTemplate, command, strings.Join(subcommands, "\n "), command) +} + +func help() { + if len(os.Args) < 3 { + usage() + return + } + subcommand, ok := commands.CommandMap[os.Args[2]] + if !ok { + fmt.Printf("Unknown command %q\n", os.Args[2]) + usage() + return + } + subcommand.Usage(os.Args[0]) +} func main() { - fmt.Println("Hello git !") + if len(os.Args) > 1 && os.Args[1] == "help" { + help() + return + } + cwd, err := os.Getwd() + if err != nil { + fmt.Printf("Unable to get the current working directory: %q\n", err) + return + } + repo, err := repository.NewGitRepo(cwd) + if err != nil { + fmt.Printf("%s must be run from within a git repo.\n", os.Args[0]) + return + } + if len(os.Args) < 2 { + // default behavior + fmt.Println("Not implemented") + return + } + subcommand, ok := commands.CommandMap[os.Args[1]] + if !ok { + fmt.Printf("Unknown command: %q\n", os.Args[1]) + usage() + return + } + if err := subcommand.Run(repo, os.Args[2:]); err != nil { + fmt.Println(err.Error()) + os.Exit(1) + } } -- cgit