From 1a6b2ab9a8d6b5d509ef60f9667455e9451ef0f5 Mon Sep 17 00:00:00 2001 From: kcmvp Date: Thu, 11 Jan 2024 09:31:49 +0800 Subject: [PATCH] #47: remove command section of plugin --- cmd/builder.go | 4 +++- cmd/builder_test.go | 2 -- cmd/initializer.go | 12 +++++++----- cmd/plugin.go | 2 +- cmd/resources/config.json | 2 +- internal/plugin.go | 11 +++-------- internal/plugin_test.go | 3 +-- internal/project.go | 7 +++---- 8 files changed, 19 insertions(+), 24 deletions(-) diff --git a/cmd/builder.go b/cmd/builder.go index 87c1dbf..ed74a63 100644 --- a/cmd/builder.go +++ b/cmd/builder.go @@ -13,9 +13,11 @@ import ( "os" ) -//go:embed resources +//go:embed resources/* var resources embed.FS +const resourceDir = "resources" + // builderCmd represents the base command when called without any subcommands var builderCmd = &cobra.Command{ Use: "gob", diff --git a/cmd/builder_test.go b/cmd/builder_test.go index b75c4c9..3491fff 100644 --- a/cmd/builder_test.go +++ b/cmd/builder_test.go @@ -62,7 +62,6 @@ func (suite *BuilderTestSuit) TestBuiltinPlugins() { assert.Equal(suite.T(), "golangci-lint", plugin.Name()) assert.Equal(suite.T(), "github.com/golangci/golangci-lint", plugin.Module()) assert.Equal(suite.T(), "lint", plugin.Alias) - assert.Equal(suite.T(), "run ./...", plugin.Command) plugin, ok = lo.Find(plugins, func(plugin internal.Plugin) bool { return plugin.Url == "gotest.tools/gotestsum" }) @@ -71,6 +70,5 @@ func (suite *BuilderTestSuit) TestBuiltinPlugins() { assert.Equal(suite.T(), "gotestsum", plugin.Name()) assert.Equal(suite.T(), "gotest.tools/gotestsum", plugin.Module()) assert.Equal(suite.T(), "test", plugin.Alias) - assert.Equal(suite.T(), "", plugin.Command) } diff --git a/cmd/initializer.go b/cmd/initializer.go index a3ea0d1..65864e1 100644 --- a/cmd/initializer.go +++ b/cmd/initializer.go @@ -35,7 +35,7 @@ func initBuildVersion() { } ver := filepath.Join(infra, "version.go") if _, err := os.Stat(ver); err != nil { - data, _ := resources.ReadFile("resources/version.tmpl") + data, _ := resources.ReadFile(filepath.Join(resourceDir, "version.tmpl")) os.WriteFile(ver, data, 0666) //nolint } } @@ -47,10 +47,12 @@ func initializerFunc(_ *cobra.Command, _ []string) { internal.CurProject().SetupPlugin(plugin) if len(plugin.Config) > 0 { if _, err := os.Stat(filepath.Join(internal.CurProject().Root(), plugin.Config)); err != nil { - data, _ := resources.ReadFile(filepath.Join("resource", plugin.Config)) - err = os.WriteFile(filepath.Join(internal.CurProject().Root(), plugin.Config), data, os.ModePerm) - if err != nil { - color.Red("failed to create configuration %s", plugin.Config) + if data, err := resources.ReadFile(filepath.Join(resourceDir, plugin.Config)); err == nil { + if err = os.WriteFile(filepath.Join(internal.CurProject().Root(), plugin.Config), data, os.ModePerm); err != nil { + color.Red("failed to create configuration %s", plugin.Config) + } + } else { + color.Red("can not find the configuration %s", plugin.Config) } } } diff --git a/cmd/plugin.go b/cmd/plugin.go index 90eee16..844997b 100644 --- a/cmd/plugin.go +++ b/cmd/plugin.go @@ -44,7 +44,7 @@ func list(_ *cobra.Command, _ ...string) error { style.HTML.CSSClass = table.DefaultHTMLCSSClass ct.SetStyle(style) rows := lo.Map(plugins, func(plugin internal.Plugin, index int) table.Row { - return table.Row{plugin.Name(), plugin.Command, plugin.Args, plugin.Url} + return table.Row{plugin.Name(), plugin.Alias, plugin.Args, plugin.Url} }) ct.AppendRows(rows) fmt.Println(ct.Render()) diff --git a/cmd/resources/config.json b/cmd/resources/config.json index 43180e8..1d078d9 100644 --- a/cmd/resources/config.json +++ b/cmd/resources/config.json @@ -2,7 +2,7 @@ "plugins": [ { "alias": "lint", - "command": "run ./...", + "args": "run ./...", "url": "github.com/golangci/golangci-lint/cmd/golangci-lint", "config": ".golangci.yaml" }, diff --git a/internal/plugin.go b/internal/plugin.go index d613739..4697e3d 100644 --- a/internal/plugin.go +++ b/internal/plugin.go @@ -20,7 +20,6 @@ const modulePattern = `^[^@]+@?[^@\s]+$` type Plugin struct { Alias string `json:"alias" mapstructure:"alias"` - Command string `json:"command" mapstructure:"command"` Args string `json:"args" mapstructure:"args"` Url string `json:"url" mapstructure:"url"` //nolint Config string `json:"config" mapstructure:"config"` @@ -78,13 +77,9 @@ func (plugin *Plugin) UnmarshalJSON(data []byte) error { } func NewPlugin(url string, options ...string) (Plugin, error) { - plugin := Plugin{Url: url} - for i, option := range options { - if i == 2 { - plugin.Command = option - } else if i == 3 { - plugin.Args = option - } + plugin := Plugin{ + Url: url, + Args: strings.Join(options, " "), } if err := plugin.init(); err != nil { return Plugin{}, err diff --git a/internal/plugin_test.go b/internal/plugin_test.go index 6dbb067..289e26c 100644 --- a/internal/plugin_test.go +++ b/internal/plugin_test.go @@ -82,7 +82,7 @@ func TestUnmarshalJSON(t *testing.T) { assert.Equal(t, "golangci-lint", plugin.Name()) assert.Equal(t, "github.com/golangci/golangci-lint", plugin.Module()) assert.Equal(t, "lint", plugin.Alias) - assert.Equal(t, "run ./...", plugin.Command) + // no command plugin, ok = lo.Find(plugins, func(plugin Plugin) bool { return plugin.Url == "gotest.tools/gotestsum" }) @@ -91,6 +91,5 @@ func TestUnmarshalJSON(t *testing.T) { assert.Equal(t, "gotestsum", plugin.Name()) assert.Equal(t, "gotest.tools/gotestsum", plugin.Module()) assert.Equal(t, "test", plugin.Alias) - assert.Equal(t, "", plugin.Command) } diff --git a/internal/project.go b/internal/project.go index 7418d82..7beb4c3 100644 --- a/internal/project.go +++ b/internal/project.go @@ -231,10 +231,9 @@ func (project *Project) Plugins() []Plugin { func (project *Project) SetupPlugin(plugin Plugin) { if !project.isSetup(plugin) { values := lo.MapEntries(map[string]string{ - "alias": plugin.Alias, - "command": plugin.Command, - "args": plugin.Args, - "url": fmt.Sprintf("%s@%s", plugin.Url, plugin.Version()), + "alias": plugin.Alias, + "args": plugin.Args, + "url": fmt.Sprintf("%s@%s", plugin.Url, plugin.Version()), }, func(key string, value string) (string, any) { return fmt.Sprintf("%s.%s.%s", pluginCfgKey, plugin.Name(), key), value })