aboutsummaryrefslogtreecommitdiffstats
path: root/git-bug.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-07-12 09:55:13 +0200
committerMichael Muré <batolettre@gmail.com>2018-07-12 09:55:13 +0200
commitd0443659123f912e9385e27efebe4b7da65aa2f6 (patch)
tree090a36d2618ecff259cbcabd501d33d460d1cd7a /git-bug.go
parenta85730cf5287d40a1e32d3a671ba2296c73387cb (diff)
downloadgit-bug-d0443659123f912e9385e27efebe4b7da65aa2f6.tar.gz
more experiment
Diffstat (limited to 'git-bug.go')
-rw-r--r--git-bug.go72
1 files changed, 70 insertions, 2 deletions
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 <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)
+ }
}