From 8a37e5034948cf8978be334d3f66dee2e185d9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Bj=C3=B6rnberg?= Date: Tue, 21 Nov 2023 21:54:00 +0100 Subject: [PATCH 1/2] export main function - allows creating custom goose binary without replicating CLI logic --- cmd/goose/main.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cmd/goose/main.go b/cmd/goose/main.go index 0b6f8070c..df1bbcc00 100644 --- a/cmd/goose/main.go +++ b/cmd/goose/main.go @@ -41,6 +41,10 @@ var ( var version string func main() { + Main() +} + +func Main() { flags.Usage = usage if err := flags.Parse(os.Args[1:]); err != nil { log.Fatalf("failed to parse args: %v", err) From 26419829996f2b36a290da89184141875862ef75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Bj=C3=B6rnberg?= Date: Tue, 21 Nov 2023 22:04:17 +0100 Subject: [PATCH 2/2] update custom goose binary example --- examples/go-migrations/main.go | 42 +++------------------------------- 1 file changed, 3 insertions(+), 39 deletions(-) diff --git a/examples/go-migrations/main.go b/examples/go-migrations/main.go index ae1bc4280..b74b9f6da 100644 --- a/examples/go-migrations/main.go +++ b/examples/go-migrations/main.go @@ -3,47 +3,11 @@ package main import ( - "flag" - "log" - "os" - "github.com/pressly/goose/v3" - _ "modernc.org/sqlite" -) - -var ( - flags = flag.NewFlagSet("goose", flag.ExitOnError) - dir = flags.String("dir", ".", "directory with migration files") + "os" ) func main() { - flags.Parse(os.Args[1:]) - args := flags.Args() - - if len(args) < 3 { - flags.Usage() - return - } - - dbstring, command := args[1], args[2] - - db, err := goose.OpenDBWithDriver("sqlite", dbstring) - if err != nil { - log.Fatalf("goose: failed to open DB: %v\n", err) - } - - defer func() { - if err := db.Close(); err != nil { - log.Fatalf("goose: failed to close DB: %v\n", err) - } - }() - - arguments := []string{} - if len(args) > 3 { - arguments = append(arguments, args[3:]...) - } - - if err := goose.Run(command, db, *dir, arguments...); err != nil { - log.Fatalf("goose %v: %v", command, err) - } + os.Args = append([]string{os.Args[0], "sqlite3"}, os.Args[1:]...) + goose.Main() }