aboutsummaryrefslogtreecommitdiffstats
path: root/git-bug.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-07-12 12:45:09 +0200
committerMichael Muré <batolettre@gmail.com>2018-07-12 12:45:09 +0200
commit1bd046d3058111f2a5a0869e97bfb76a0528afff (patch)
tree2de6d2a936fdc8fd4fd4f99d9a63753b9ebded47 /git-bug.go
parentc498674718608a1171a4fcef6f26184df7d5fa7b (diff)
downloadgit-bug-1bd046d3058111f2a5a0869e97bfb76a0528afff.tar.gz
rework how the usage help is handled
Diffstat (limited to 'git-bug.go')
-rw-r--r--git-bug.go60
1 files changed, 34 insertions, 26 deletions
diff --git a/git-bug.go b/git-bug.go
index 08d9d04a..74fd6c90 100644
--- a/git-bug.go
+++ b/git-bug.go
@@ -2,13 +2,14 @@ package main
import (
"fmt"
+ "github.com/MichaelMure/git-bug/commands"
+ "github.com/MichaelMure/git-bug/repository"
"os"
"sort"
"strings"
- "github.com/MichaelMure/git-bug/repository"
- "github.com/MichaelMure/git-bug/commands"
)
+const rootCommandName = "git bug"
const usageMessageTemplate = `Usage: %s <command>
Where <command> is one of:
@@ -18,35 +19,46 @@ For individual command usage, run:
%s help <command>
`
-func usage() {
- command := os.Args[0]
+func rootUsage() {
var subcommands []string
for subcommand := range commands.CommandMap {
subcommands = append(subcommands, subcommand)
}
sort.Strings(subcommands)
- fmt.Printf(usageMessageTemplate, command, strings.Join(subcommands, "\n "), command)
+ fmt.Printf(usageMessageTemplate, rootCommandName, strings.Join(subcommands, "\n "), rootCommandName)
}
-func help() {
- if len(os.Args) < 3 {
- usage()
- return
- }
- subcommand, ok := commands.CommandMap[os.Args[2]]
+func help(command string) {
+ subcommand, ok := commands.CommandMap[command]
if !ok {
- fmt.Printf("Unknown command %q\n", os.Args[2])
- usage()
+ fmt.Printf("Unknown command %q\n", command)
+ rootUsage()
return
}
- subcommand.Usage(os.Args[0])
+ subcommand.Usage(rootCommandName)
}
func main() {
- if len(os.Args) > 1 && os.Args[1] == "help" {
- help()
+ args := os.Args
+
+ // git bug
+ if len(args) == 1 {
+ fmt.Println("Not implemented")
+ //TODO: list bugs
return
}
+
+ if args[1] == "help" {
+ if len(args) == 2 {
+ // git bug help
+ rootUsage()
+ } else {
+ // git bug help <command>
+ help(args[2])
+ }
+ return
+ }
+
cwd, err := os.Getwd()
if err != nil {
fmt.Printf("Unable to get the current working directory: %q\n", err)
@@ -54,21 +66,17 @@ func main() {
}
repo, err := repository.NewGitRepo(cwd)
if err != nil {
- fmt.Printf("%s must be run from within a git repo.\n", os.Args[0])
+ fmt.Printf("%s must be run from within a git repo.\n", rootCommandName)
return
}
- if len(os.Args) < 2 {
- // default behavior
- fmt.Println("Not implemented")
- return
- }
- subcommand, ok := commands.CommandMap[os.Args[1]]
+
+ subcommand, ok := commands.CommandMap[args[1]]
if !ok {
- fmt.Printf("Unknown command: %q\n", os.Args[1])
- usage()
+ fmt.Printf("Unknown command: %q\n", args[1])
+ rootUsage()
return
}
- if err := subcommand.Run(repo, os.Args[2:]); err != nil {
+ if err := subcommand.Run(repo, args[2:]); err != nil {
fmt.Println(err.Error())
os.Exit(1)
}