review: push argument handling into subcommands
Will enable flags for subcommands.
Improves error checking already.
Change-Id: I19219fd4d05b605c89fe0d2b1241aafbb6f72dbe
diff --git a/review.go b/review.go
index e86f7fc..49ad086 100644
--- a/review.go
+++ b/review.go
@@ -78,31 +78,33 @@
goToRepoRoot()
installHook()
- switch flag.Arg(0) {
+ command, args := flag.Arg(0), flag.Args()[1:]
+
+ switch command {
case "help":
fmt.Fprintf(os.Stdout, help, os.Args[0])
case "create", "cr":
- name := flag.Arg(1)
- if name == "" {
- flag.Usage()
- }
- create(name)
+ create(args)
case "commit", "co":
- commit()
+ commit(args)
case "diff", "d":
- diff()
+ diff(args)
case "upload", "u":
- upload()
+ upload(args)
case "sync", "s":
- doSync()
+ doSync(args)
case "pending", "p":
- pending()
+ pending(args)
default:
flag.Usage()
}
}
-func create(name string) {
+func create(args []string) {
+ if len(args) != 1 || args[0] == "" {
+ flag.Usage()
+ }
+ name := args[0]
if !hasStagedChanges() {
dief("no staged changes.\nDid you forget to 'git add'?")
}
@@ -119,7 +121,10 @@
}
}
-func commit() {
+func commit(args []string) {
+ if len(args) != 0 {
+ flag.Usage()
+ }
if !hasStagedChanges() {
dief("no staged changes. Did you forget to 'git add'?")
}
@@ -129,18 +134,27 @@
run("git", "commit", "-q", "--amend", "-C", "HEAD")
}
-func diff() {
+func diff(args []string) {
+ if len(args) != 0 {
+ flag.Usage()
+ }
run("git", "diff", "HEAD^", "HEAD")
}
-func upload() {
+func upload(args []string) {
+ if len(args) != 0 {
+ flag.Usage()
+ }
if currentBranch() == "master" {
dief("can't upload from master branch.")
}
run("git", "push", "-q", "origin", "HEAD:refs/for/master")
}
-func doSync() {
+func doSync(args []string) {
+ if len(args) != 0 {
+ flag.Usage()
+ }
run("git", "fetch", "-q")
// If we're on master, just fast-forward.
@@ -189,7 +203,10 @@
run("git", "rebase", "-q", "origin/master")
}
-func pending() {
+func pending(args []string) {
+ if len(args) != 0 {
+ flag.Usage()
+ }
var (
wg sync.WaitGroup
origin = originURL()