From 38f0d7ab600352fecd78e11a06ace78808882885 Mon Sep 17 00:00:00 2001 From: 1vn Date: Tue, 13 Nov 2018 14:57:30 -0500 Subject: [PATCH 1/5] clean up arg parsing a bit --- cmd/goose/main.go | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/cmd/goose/main.go b/cmd/goose/main.go index 9c93865..a9e10b2 100644 --- a/cmd/goose/main.go +++ b/cmd/goose/main.go @@ -19,28 +19,24 @@ func main() { flags.Parse(os.Args[1:]) args := flags.Args() - - if len(args) > 1 && args[0] == "create" { - if err := goose.Run("create", nil, *dir, args[1:]...); err != nil { - log.Fatalf("goose run: %v", err) - } - return - } - - // TODO clean up arg/flag parsing flow - if args[0] == "fix" { - if err := goose.Run("fix", nil, *dir); err != nil { - log.Fatalf("goose run: %v", err) - } - return - } - - if len(args) < 3 { + if len(args) == 0 || args[0] == "-h" || args[0] == "--help" { flags.Usage() return } - if args[0] == "-h" || args[0] == "--help" { + switch args[0] { + case "create": + if err := goose.Run("create", nil, *dir, args[1:]...); err != nil { + log.Fatalf("goose run: %v", err) + } + return + case "fix": + if err := goose.Run("fix", nil, *dir); err != nil { + log.Fatalf("goose run: %v", err) + } + } + + if len(args) < 3 { flags.Usage() return } From 647b09602a31967a592353f396352e31a08953d7 Mon Sep 17 00:00:00 2001 From: 1vn Date: Tue, 13 Nov 2018 14:59:32 -0500 Subject: [PATCH 2/5] add test case --- goose_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/goose_test.go b/goose_test.go index 06ae60a..5ff62eb 100644 --- a/goose_test.go +++ b/goose_test.go @@ -16,6 +16,7 @@ func TestDefaultBinary(t *testing.T) { "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db version", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db down", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db status", + "./bin/goose", } for _, cmd := range commands { From 00966d4fc8b78eb7afc323cd226c0e8ead3ef20d Mon Sep 17 00:00:00 2001 From: 1vn Date: Tue, 13 Nov 2018 14:59:43 -0500 Subject: [PATCH 3/5] add test case --- goose_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/goose_test.go b/goose_test.go index 5ff62eb..2d17791 100644 --- a/goose_test.go +++ b/goose_test.go @@ -16,7 +16,7 @@ func TestDefaultBinary(t *testing.T) { "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db version", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db down", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db status", - "./bin/goose", + "./bin/goose", "", } for _, cmd := range commands { From 17191360c43a45cbc5f3074d684003fe14890141 Mon Sep 17 00:00:00 2001 From: 1vn Date: Tue, 13 Nov 2018 15:06:17 -0500 Subject: [PATCH 4/5] fix test --- goose_test.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/goose_test.go b/goose_test.go index 2d17791..9af0de4 100644 --- a/goose_test.go +++ b/goose_test.go @@ -16,12 +16,18 @@ func TestDefaultBinary(t *testing.T) { "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db version", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db down", "./bin/goose -dir=examples/sql-migrations sqlite3 sql.db status", - "./bin/goose", "", + "./bin/goose", } for _, cmd := range commands { args := strings.Split(cmd, " ") - out, err := exec.Command(args[0], args[1:]...).CombinedOutput() + command := args[0] + var params []string + if len(args) > 1 { + params = args[1:] + } + + out, err := exec.Command(command, params...).CombinedOutput() if err != nil { t.Fatalf("%s:\n%v\n\n%s", err, cmd, out) } From 428691caa4af15f8042f6a8c674fe99d1c8d473f Mon Sep 17 00:00:00 2001 From: 1vn Date: Tue, 13 Nov 2018 15:06:51 -0500 Subject: [PATCH 5/5] port to example --- examples/go-migrations/main.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/go-migrations/main.go b/examples/go-migrations/main.go index bb323af..28970af 100644 --- a/examples/go-migrations/main.go +++ b/examples/go-migrations/main.go @@ -25,20 +25,21 @@ func main() { flags.Parse(os.Args[1:]) args := flags.Args() + if len(args) == 0 || args[0] == "-h" || args[0] == "--help" { + flags.Usage() + return + } - if len(args) > 1 && args[0] == "create" { + switch args[0] { + case "create": if err := goose.Run("create", nil, *dir, args[1:]...); err != nil { log.Fatalf("goose run: %v", err) } return - } - - // TODO clean up arg/flag parsing flow - if args[0] == "fix" { + case "fix": if err := goose.Run("fix", nil, *dir); err != nil { log.Fatalf("goose run: %v", err) } - return } if len(args) < 3 {