diff options
author | Michael Muré <batolettre@gmail.com> | 2018-07-12 09:55:13 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-07-12 09:55:13 +0200 |
commit | d0443659123f912e9385e27efebe4b7da65aa2f6 (patch) | |
tree | 090a36d2618ecff259cbcabd501d33d460d1cd7a /git-bug.go | |
parent | a85730cf5287d40a1e32d3a671ba2296c73387cb (diff) | |
download | git-bug-d0443659123f912e9385e27efebe4b7da65aa2f6.tar.gz |
more experiment
Diffstat (limited to 'git-bug.go')
-rw-r--r-- | git-bug.go | 72 |
1 files changed, 70 insertions, 2 deletions
@@ -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 <command> + +Where <command> is one of: + %s + +For individual command usage, run: + %s help <command> +` + +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) + } } |