cli: add dependencies to builders

This commit is contained in:
Elijah Duffy
2025-06-04 17:47:09 -07:00
parent 6331eaf093
commit b201306152
3 changed files with 44 additions and 36 deletions

View File

@@ -4,6 +4,8 @@ import (
"context" "context"
"fmt" "fmt"
"gitea.auvem.com/go-toolkit/app"
"gitea.auvem.com/go-toolkit/appcli"
"gitea.auvem.com/go-toolkit/dbx" "gitea.auvem.com/go-toolkit/dbx"
"gitea.auvem.com/go-toolkit/migrate" "gitea.auvem.com/go-toolkit/migrate"
"github.com/pressly/goose/v3" "github.com/pressly/goose/v3"
@@ -11,30 +13,30 @@ import (
) )
// MigrateCmd returns the main migrate command. // MigrateCmd returns the main migrate command.
func MigrateCmd() *cli.Command { func MigrateCmd(directDeps []*app.Module, childDeps []*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "migrate", Name: "migrate",
Usage: "Migrate the database", Usage: "Migrate the database",
Commands: AllSubcommands(), Commands: AllSubcommands(childDeps...),
} }, directDeps...)
} }
// AllSubcommands returns all subcommands of the migrate command. // AllSubcommands returns all subcommands of the migrate command.
func AllSubcommands() []*cli.Command { func AllSubcommands(deps ...*app.Module) []*cli.Command {
return []*cli.Command{ return []*cli.Command{
MigrateStatusCmd(), MigrateStatusCmd(deps...),
MigrateCreateCmd(), MigrateCreateCmd(deps...),
MigrateUpCmd(), MigrateUpCmd(deps...),
MigrateUpToCmd(), MigrateUpToCmd(deps...),
MigrateDownCmd(), MigrateDownCmd(deps...),
MigrateDownToCmd(), MigrateDownToCmd(deps...),
MigrateRedoCmd(), MigrateRedoCmd(deps...),
} }
} }
// MigrateStatusCmd returns a command to get database migration status. // MigrateStatusCmd returns a command to get database migration status.
func MigrateStatusCmd() *cli.Command { func MigrateStatusCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "status", Name: "status",
Usage: "Get database migration status", Usage: "Get database migration status",
Action: func(ctx context.Context, cmd *cli.Command) error { Action: func(ctx context.Context, cmd *cli.Command) error {
@@ -44,12 +46,12 @@ func MigrateStatusCmd() *cli.Command {
return nil return nil
}, },
} }, deps...)
} }
// MigrateCreateCmd returns a command to create a new migration. // MigrateCreateCmd returns a command to create a new migration.
func MigrateCreateCmd() *cli.Command { func MigrateCreateCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "create", Name: "create",
Usage: "Create a new migration", Usage: "Create a new migration",
Arguments: []cli.Argument{ Arguments: []cli.Argument{
@@ -74,12 +76,12 @@ func MigrateCreateCmd() *cli.Command {
return nil return nil
}, },
} }, deps...)
} }
// MigrateUpCmd returns a command to apply all available database migrations. // MigrateUpCmd returns a command to apply all available database migrations.
func MigrateUpCmd() *cli.Command { func MigrateUpCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "up", Name: "up",
Usage: "Apply all available database migrations", Usage: "Apply all available database migrations",
Action: func(ctx context.Context, cmd *cli.Command) error { Action: func(ctx context.Context, cmd *cli.Command) error {
@@ -88,12 +90,12 @@ func MigrateUpCmd() *cli.Command {
} }
return nil return nil
}, },
} }, deps...)
} }
// MigrateUpToCmd returns a command to apply all available database migrations up to a specific version. // MigrateUpToCmd returns a command to apply all available database migrations up to a specific version.
func MigrateUpToCmd() *cli.Command { func MigrateUpToCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "up-to", Name: "up-to",
Usage: "Apply all available database migrations up to a specific version", Usage: "Apply all available database migrations up to a specific version",
Arguments: []cli.Argument{ Arguments: []cli.Argument{
@@ -109,12 +111,12 @@ func MigrateUpToCmd() *cli.Command {
} }
return nil return nil
}, },
} }, deps...)
} }
// MigrateDownCmd returns a command to rollback the most recent database migration. // MigrateDownCmd returns a command to rollback the most recent database migration.
func MigrateDownCmd() *cli.Command { func MigrateDownCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "down", Name: "down",
Usage: "Rollback the most recent database migration", Usage: "Rollback the most recent database migration",
Action: func(ctx context.Context, cmd *cli.Command) error { Action: func(ctx context.Context, cmd *cli.Command) error {
@@ -123,12 +125,12 @@ func MigrateDownCmd() *cli.Command {
} }
return nil return nil
}, },
} }, deps...)
} }
// MigrateDownToCmd returns a command to rollback all database migrations down to a specific version. // MigrateDownToCmd returns a command to rollback all database migrations down to a specific version.
func MigrateDownToCmd() *cli.Command { func MigrateDownToCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "down-to", Name: "down-to",
Usage: "Rollback all database migrations down to a specific version", Usage: "Rollback all database migrations down to a specific version",
Arguments: []cli.Argument{ Arguments: []cli.Argument{
@@ -144,12 +146,12 @@ func MigrateDownToCmd() *cli.Command {
} }
return nil return nil
}, },
} }, deps...)
} }
// MigrateRedoCmd returns a command to rollback the most recent database migration and reapply it. // MigrateRedoCmd returns a command to rollback the most recent database migration and reapply it.
func MigrateRedoCmd() *cli.Command { func MigrateRedoCmd(deps ...*app.Module) *cli.Command {
return &cli.Command{ return appcli.NewCommand(&cli.Command{
Name: "redo", Name: "redo",
Usage: "Rollback the most recent database migration and reapply it", Usage: "Rollback the most recent database migration and reapply it",
Action: func(ctx context.Context, cmd *cli.Command) error { Action: func(ctx context.Context, cmd *cli.Command) error {
@@ -158,5 +160,5 @@ func MigrateRedoCmd() *cli.Command {
} }
return nil return nil
}, },
} }, deps...)
} }

4
go.mod
View File

@@ -3,10 +3,12 @@ module gitea.auvem.com/go-toolkit/migrate
go 1.24.0 go 1.24.0
require ( require (
gitea.auvem.com/go-toolkit/app v0.0.0-20250530224140-b760b035b4d1 gitea.auvem.com/go-toolkit/app v0.0.0-20250603235859-6f9e3731acf9
gitea.auvem.com/go-toolkit/appcli v0.0.0-20250604221759-6b4196dbda59
gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364 gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364
github.com/pressly/goose/v3 v3.24.3 github.com/pressly/goose/v3 v3.24.3
github.com/spf13/cobra v1.9.1 github.com/spf13/cobra v1.9.1
github.com/urfave/cli/v3 v3.3.3
) )
require ( require (

8
go.sum
View File

@@ -1,7 +1,9 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
gitea.auvem.com/go-toolkit/app v0.0.0-20250530224140-b760b035b4d1 h1:22A/8PcixfY9B+q+30aTyFUW8W4DtDIELDWP2WUdKk0= gitea.auvem.com/go-toolkit/app v0.0.0-20250603235859-6f9e3731acf9 h1:MYOI+bB4IBAqoL1tyIUFnu0S+NSq0OX88J3K/PUR7lI=
gitea.auvem.com/go-toolkit/app v0.0.0-20250530224140-b760b035b4d1/go.mod h1:a7ENpOxndUdONE6oZ9MZAvG1ba2uq01x/LtcnDkpOj8= gitea.auvem.com/go-toolkit/app v0.0.0-20250603235859-6f9e3731acf9/go.mod h1:a7ENpOxndUdONE6oZ9MZAvG1ba2uq01x/LtcnDkpOj8=
gitea.auvem.com/go-toolkit/appcli v0.0.0-20250604221759-6b4196dbda59 h1:fKH/G5QUbqUeA20UlxqSOVZvFPjt2JIaGgaLg4QRSEs=
gitea.auvem.com/go-toolkit/appcli v0.0.0-20250604221759-6b4196dbda59/go.mod h1:kutQ69eyFMhs7l8siqdZcHRQ9BLc32ftLs0crnm+dys=
gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364 h1:xadjfyFYYoyy8d6AtqiNSv8OtMtav53vMpg3mVRM+10= gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364 h1:xadjfyFYYoyy8d6AtqiNSv8OtMtav53vMpg3mVRM+10=
gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364/go.mod h1:3CYeto5wVq0fcABgssDYycXGbR7ibNiN66p1HpxBdds= gitea.auvem.com/go-toolkit/dbx v0.0.0-20250530232843-55cc3ffd8364/go.mod h1:3CYeto5wVq0fcABgssDYycXGbR7ibNiN66p1HpxBdds=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
@@ -54,6 +56,8 @@ github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I=
github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI=