diff --git a/go.mod b/go.mod index 7dd6f4b..3aa1e8c 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,8 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/rs/zerolog v1.32.0 github.com/stretchr/testify v1.9.0 - github.com/thegeeklab/wp-plugin-go/v2 v2.3.1 + github.com/thegeeklab/wp-plugin-go/v3 v3.0.2 github.com/urfave/cli/v2 v2.27.2 - golang.org/x/sys v0.20.0 ) require ( @@ -31,5 +30,6 @@ require ( github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 41f134d..b286ef2 100644 --- a/go.sum +++ b/go.sum @@ -47,8 +47,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/thegeeklab/wp-plugin-go/v2 v2.3.1 h1:ARwYgTPZ5iPsmOenmqcCf8TjiEe8wBOHKO7H/Xshe48= -github.com/thegeeklab/wp-plugin-go/v2 v2.3.1/go.mod h1:0t8M8txtEFiaB6RqLX8vLrxkqAo5FT5Hx7dztN592D4= +github.com/thegeeklab/wp-plugin-go/v3 v3.0.2 h1:Mv5i8S1WY+BUNjTjX6lOnB3p8S9mvM+XwfY4R98gx0g= +github.com/thegeeklab/wp-plugin-go/v3 v3.0.2/go.mod h1:ij1iJcAVgzerBTqXnmq0bu1VA+hhVVwzXKqiqfoGjjg= github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= diff --git a/internal/docs/main.go b/internal/docs/main.go index e591ae2..df023d0 100644 --- a/internal/docs/main.go +++ b/internal/docs/main.go @@ -11,8 +11,8 @@ import ( "time" "github.com/thegeeklab/wp-opentofu/plugin" - "github.com/thegeeklab/wp-plugin-go/v2/docs" - wp_template "github.com/thegeeklab/wp-plugin-go/v2/template" + plugin_docs "github.com/thegeeklab/wp-plugin-go/v3/docs" + plugin_template "github.com/thegeeklab/wp-plugin-go/v3/template" ) func main() { @@ -23,7 +23,7 @@ func main() { p := plugin.New(nil) - out, err := wp_template.Render(context.Background(), client, tmpl, docs.GetTemplateData(p.App)) + out, err := plugin_template.Render(context.Background(), client, tmpl, plugin_docs.GetTemplateData(p.App)) if err != nil { panic(err) } diff --git a/plugin/impl.go b/plugin/impl.go index fd32533..3c32101 100644 --- a/plugin/impl.go +++ b/plugin/impl.go @@ -8,7 +8,7 @@ import ( "os" "github.com/thegeeklab/wp-opentofu/tofu" - "github.com/thegeeklab/wp-plugin-go/v2/types" + plugin_exec "github.com/thegeeklab/wp-plugin-go/v3/exec" ) var ( @@ -80,7 +80,7 @@ func (p *Plugin) Validate() error { // Execute provides the implementation of the plugin. func (p *Plugin) Execute() error { - batchCmd := make([]*types.Cmd, 0) + batchCmd := make([]*plugin_exec.Cmd, 0) batchCmd = append(batchCmd, p.Settings.Tofu.Version()) if p.Settings.TofuVersion != "" { diff --git a/plugin/plugin.go b/plugin/plugin.go index ba09e0d..36ca5fc 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/thegeeklab/wp-opentofu/tofu" - wp "github.com/thegeeklab/wp-plugin-go/v2/plugin" + plugin_base "github.com/thegeeklab/wp-plugin-go/v3/plugin" "github.com/urfave/cli/v2" ) @@ -12,7 +12,7 @@ import ( // Plugin implements provide the plugin. type Plugin struct { - *wp.Plugin + *plugin_base.Plugin Settings *Settings } @@ -25,15 +25,15 @@ type Settings struct { Tofu tofu.Tofu } -func New(e wp.ExecuteFunc, build ...string) *Plugin { +func New(e plugin_base.ExecuteFunc, build ...string) *Plugin { p := &Plugin{ Settings: &Settings{}, } - options := wp.Options{ + options := plugin_base.Options{ Name: "wp-opentofu", Description: "Manage infrastructure with OpenTofu", - Flags: Flags(p.Settings, wp.FlagsPluginCategory), + Flags: Flags(p.Settings, plugin_base.FlagsPluginCategory), Execute: p.run, HideWoodpeckerFlags: true, } @@ -50,7 +50,7 @@ func New(e wp.ExecuteFunc, build ...string) *Plugin { options.Execute = e } - p.Plugin = wp.New(options) + p.Plugin = plugin_base.New(options) return p } diff --git a/tofu/tofu.go b/tofu/tofu.go index 91732f4..aa4aa63 100644 --- a/tofu/tofu.go +++ b/tofu/tofu.go @@ -2,10 +2,10 @@ package tofu import ( "fmt" + "os" - "github.com/thegeeklab/wp-plugin-go/v2/types" + plugin_exec "github.com/thegeeklab/wp-plugin-go/v3/exec" "github.com/urfave/cli/v2" - "golang.org/x/sys/execabs" ) const TofuBin = "/usr/local/bin/tofu" @@ -36,14 +36,18 @@ type FmtOptions struct { Check *bool `json:"check"` } -func (t *Tofu) Version() *types.Cmd { - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, "version"), - Private: t.NoLog, +func (t *Tofu) Version() *plugin_exec.Cmd { + cmd := plugin_exec.Command(TofuBin, "version") + + if !t.NoLog { + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr } + + return cmd } -func (t *Tofu) Init() *types.Cmd { +func (t *Tofu) Init() *plugin_exec.Cmd { args := []string{ "init", } @@ -55,24 +59,30 @@ func (t *Tofu) Init() *types.Cmd { // Fail tofu execution on prompt args = append(args, "-input=false") - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, args...), - } + cmd := plugin_exec.Command(TofuBin, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + return cmd } -func (t *Tofu) GetModules() *types.Cmd { - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, "get"), - } +func (t *Tofu) GetModules() *plugin_exec.Cmd { + cmd := plugin_exec.Command(TofuBin, "get") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + return cmd } -func (t *Tofu) Validate() *types.Cmd { - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, "validate"), - } +func (t *Tofu) Validate() *plugin_exec.Cmd { + cmd := plugin_exec.Command(TofuBin, "validate") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + return cmd } -func (t *Tofu) Fmt() *types.Cmd { +func (t *Tofu) Fmt() *plugin_exec.Cmd { args := []string{ "fmt", } @@ -93,12 +103,14 @@ func (t *Tofu) Fmt() *types.Cmd { args = append(args, fmt.Sprintf("-check=%t", *t.FmtOptions.Check)) } - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, args...), - } + cmd := plugin_exec.Command(TofuBin, args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + return cmd } -func (t *Tofu) Plan(destroy bool) *types.Cmd { +func (t *Tofu) Plan(destroy bool) *plugin_exec.Cmd { args := []string{ "plan", } @@ -129,13 +141,17 @@ func (t *Tofu) Plan(destroy bool) *types.Cmd { args = append(args, "-refresh=false") } - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, args...), - Private: t.NoLog, + cmd := plugin_exec.Command(TofuBin, args...) + + if !t.NoLog { + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr } + + return cmd } -func (t *Tofu) Apply() *types.Cmd { +func (t *Tofu) Apply() *plugin_exec.Cmd { args := []string{ "apply", } @@ -164,13 +180,17 @@ func (t *Tofu) Apply() *types.Cmd { args = append(args, t.OutFile) } - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, args...), - Private: t.NoLog, + cmd := plugin_exec.Command(TofuBin, args...) + + if !t.NoLog { + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr } + + return cmd } -func (t *Tofu) Destroy() *types.Cmd { +func (t *Tofu) Destroy() *plugin_exec.Cmd { args := []string{ "destroy", } @@ -193,8 +213,12 @@ func (t *Tofu) Destroy() *types.Cmd { args = append(args, "-auto-approve") - return &types.Cmd{ - Cmd: execabs.Command(TofuBin, args...), - Private: t.NoLog, + cmd := plugin_exec.Command(TofuBin, args...) + + if !t.NoLog { + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr } + + return cmd } diff --git a/tofu/tofu_test.go b/tofu/tofu_test.go index c8bdbd7..d8d6f0d 100644 --- a/tofu/tofu_test.go +++ b/tofu/tofu_test.go @@ -449,7 +449,10 @@ func TestTofu_Apply(t *testing.T) { t.Run(tt.name, func(t *testing.T) { cmd := tt.tofu.Apply() assert.Equal(t, tt.want, cmd.Cmd.Args) - assert.Equal(t, tt.tofu.NoLog, cmd.Private) + + if tt.tofu.NoLog { + assert.Equal(t, cmd.Stdout, nil) + } }) } } @@ -538,8 +541,12 @@ func TestTofu_Destroy(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { cmd := tt.tofu.Destroy() + assert.Equal(t, tt.want, cmd.Cmd.Args) - assert.Equal(t, tt.tofu.NoLog, cmd.Private) + + if tt.tofu.NoLog { + assert.Equal(t, cmd.Stdout, nil) + } }) } }