diff --git a/CHANGELOG.md b/CHANGELOG.md index 1746a2250..6f9151513 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ - feat(service/ratelimit): moved the `rate-limit` commands under the `service` command, with an unlisted and deprecated alias of `rate-limit` ([#1632](https://github.com/fastly/cli/pull/1632)) - feat(compute/build): Remove Rust version restriction, allowing 1.93.0 and later versions to be used. ([#1633](https://github.com/fastly/cli/pull/1633)) - feat(service/resourcelink): moved the `resource-link` commands under the `service` command, with an unlisted and deprecated alias of `resource-link` ([#1635](https://github.com/fastly/cli/pull/1635)) +- feat(service/logging): moved the `logging` commands under the `service` command, with an unlisted and deprecated alias of `logging` ([#1642](https://github.com/fastly/cli/pull/1642)) - feat(service/auth): moved the `service-auth` commands under the `service` command and renamed to `auth`, with an unlisted and deprecated alias of `service-auth` ([#1643](https://github.com/fastly/cli/pull/1643)) ### Bug fixes: diff --git a/pkg/app/run_test.go b/pkg/app/run_test.go index 9c0887b53..883d66e4c 100644 --- a/pkg/app/run_test.go +++ b/pkg/app/run_test.go @@ -72,7 +72,6 @@ ip-list kv-store kv-store-entry log-tail -logging ngwaf object-storage pops diff --git a/pkg/commands/alias/backend/describe.go b/pkg/commands/alias/backend/describe.go index 06f251e17..6e4cbde15 100644 --- a/pkg/commands/alias/backend/describe.go +++ b/pkg/commands/alias/backend/describe.go @@ -24,6 +24,8 @@ func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCo // Exec implements the command interface. func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { - text.Deprecated(out, "Use the 'service backend describe' command instead.") + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service backend describe' command instead.") + } return c.DescribeCommand.Exec(in, out) } diff --git a/pkg/commands/alias/backend/list.go b/pkg/commands/alias/backend/list.go index 5249c5657..84ae255ce 100644 --- a/pkg/commands/alias/backend/list.go +++ b/pkg/commands/alias/backend/list.go @@ -24,6 +24,8 @@ func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { // Exec implements the command interface. func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { - text.Deprecated(out, "Use the 'service backend list' command instead.") + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service backend list' command instead.") + } return c.ListCommand.Exec(in, out) } diff --git a/pkg/commands/alias/healthcheck/describe.go b/pkg/commands/alias/healthcheck/describe.go index 422bd71e0..6e27ea16a 100644 --- a/pkg/commands/alias/healthcheck/describe.go +++ b/pkg/commands/alias/healthcheck/describe.go @@ -24,6 +24,8 @@ func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCo // Exec implements the command interface. func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { - text.Deprecated(out, "Use the 'service healthcheck describe' command instead.") + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service healthcheck describe' command instead.") + } return c.DescribeCommand.Exec(in, out) } diff --git a/pkg/commands/alias/healthcheck/list.go b/pkg/commands/alias/healthcheck/list.go index 2310e1c90..f6f20ffa8 100644 --- a/pkg/commands/alias/healthcheck/list.go +++ b/pkg/commands/alias/healthcheck/list.go @@ -24,6 +24,8 @@ func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { // Exec implements the command interface. func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { - text.Deprecated(out, "Use the 'service healthcheck list' command instead.") + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service healthcheck list' command instead.") + } return c.ListCommand.Exec(in, out) } diff --git a/pkg/commands/alias/logging/azureblob/create.go b/pkg/commands/alias/logging/azureblob/create.go new file mode 100644 index 000000000..7aae020b1 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/create.go @@ -0,0 +1,29 @@ +package azureblob + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging azureblob create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/azureblob/delete.go b/pkg/commands/alias/logging/azureblob/delete.go new file mode 100644 index 000000000..1fdfdbf50 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/delete.go @@ -0,0 +1,29 @@ +package azureblob + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging azureblob delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/azureblob/describe.go b/pkg/commands/alias/logging/azureblob/describe.go new file mode 100644 index 000000000..d997ce539 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/describe.go @@ -0,0 +1,31 @@ +package azureblob + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging azureblob describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/azureblob/doc.go b/pkg/commands/alias/logging/azureblob/doc.go new file mode 100644 index 000000000..ac5805418 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/doc.go @@ -0,0 +1,2 @@ +// Package azureblob contains deprecated aliases for the 'service logging azureblob' commands. +package azureblob diff --git a/pkg/commands/alias/logging/azureblob/list.go b/pkg/commands/alias/logging/azureblob/list.go new file mode 100644 index 000000000..fa57bbc42 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/list.go @@ -0,0 +1,31 @@ +package azureblob + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging azureblob list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/azureblob/root.go b/pkg/commands/alias/logging/azureblob/root.go new file mode 100644 index 000000000..19d20345c --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/root.go @@ -0,0 +1,31 @@ +package azureblob + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "azureblob" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Azure Blob Storage logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/azureblob/update.go b/pkg/commands/alias/logging/azureblob/update.go new file mode 100644 index 000000000..aa8042c02 --- /dev/null +++ b/pkg/commands/alias/logging/azureblob/update.go @@ -0,0 +1,29 @@ +package azureblob + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging azureblob update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/bigquery/create.go b/pkg/commands/alias/logging/bigquery/create.go new file mode 100644 index 000000000..b13cdcb15 --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/create.go @@ -0,0 +1,29 @@ +package bigquery + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging bigquery create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/bigquery/delete.go b/pkg/commands/alias/logging/bigquery/delete.go new file mode 100644 index 000000000..095e29e24 --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/delete.go @@ -0,0 +1,29 @@ +package bigquery + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging bigquery delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/bigquery/describe.go b/pkg/commands/alias/logging/bigquery/describe.go new file mode 100644 index 000000000..381e31462 --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/describe.go @@ -0,0 +1,31 @@ +package bigquery + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging bigquery describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/bigquery/doc.go b/pkg/commands/alias/logging/bigquery/doc.go new file mode 100644 index 000000000..7c1df951b --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/doc.go @@ -0,0 +1,2 @@ +// Package bigquery contains deprecated aliases for the 'service logging bigquery' commands. +package bigquery diff --git a/pkg/commands/alias/logging/bigquery/list.go b/pkg/commands/alias/logging/bigquery/list.go new file mode 100644 index 000000000..1d6148657 --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/list.go @@ -0,0 +1,31 @@ +package bigquery + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging bigquery list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/bigquery/root.go b/pkg/commands/alias/logging/bigquery/root.go new file mode 100644 index 000000000..07366a60b --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/root.go @@ -0,0 +1,31 @@ +package bigquery + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "bigquery" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Google BigQuery logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/bigquery/update.go b/pkg/commands/alias/logging/bigquery/update.go new file mode 100644 index 000000000..6a0ff19d9 --- /dev/null +++ b/pkg/commands/alias/logging/bigquery/update.go @@ -0,0 +1,29 @@ +package bigquery + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging bigquery update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/cloudfiles/create.go b/pkg/commands/alias/logging/cloudfiles/create.go new file mode 100644 index 000000000..033296ef1 --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/create.go @@ -0,0 +1,29 @@ +package cloudfiles + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging cloudfiles create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/cloudfiles/delete.go b/pkg/commands/alias/logging/cloudfiles/delete.go new file mode 100644 index 000000000..0fe4cd7b6 --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/delete.go @@ -0,0 +1,29 @@ +package cloudfiles + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging cloudfiles delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/cloudfiles/describe.go b/pkg/commands/alias/logging/cloudfiles/describe.go new file mode 100644 index 000000000..e195ca63e --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/describe.go @@ -0,0 +1,31 @@ +package cloudfiles + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging cloudfiles describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/cloudfiles/doc.go b/pkg/commands/alias/logging/cloudfiles/doc.go new file mode 100644 index 000000000..efe786473 --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/doc.go @@ -0,0 +1,2 @@ +// Package cloudfiles contains deprecated aliases for the 'service logging cloudfiles' commands. +package cloudfiles diff --git a/pkg/commands/alias/logging/cloudfiles/list.go b/pkg/commands/alias/logging/cloudfiles/list.go new file mode 100644 index 000000000..fa8160ce5 --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/list.go @@ -0,0 +1,31 @@ +package cloudfiles + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging cloudfiles list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/cloudfiles/root.go b/pkg/commands/alias/logging/cloudfiles/root.go new file mode 100644 index 000000000..310d4c3fc --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/root.go @@ -0,0 +1,31 @@ +package cloudfiles + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "cloudfiles" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Rackspace Cloud Files logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/cloudfiles/update.go b/pkg/commands/alias/logging/cloudfiles/update.go new file mode 100644 index 000000000..2ab785e59 --- /dev/null +++ b/pkg/commands/alias/logging/cloudfiles/update.go @@ -0,0 +1,29 @@ +package cloudfiles + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging cloudfiles update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/datadog/create.go b/pkg/commands/alias/logging/datadog/create.go new file mode 100644 index 000000000..39cdea6c8 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/create.go @@ -0,0 +1,29 @@ +package datadog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/datadog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging datadog create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/datadog/delete.go b/pkg/commands/alias/logging/datadog/delete.go new file mode 100644 index 000000000..d7e9cb494 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/delete.go @@ -0,0 +1,29 @@ +package datadog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/datadog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging datadog delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/datadog/describe.go b/pkg/commands/alias/logging/datadog/describe.go new file mode 100644 index 000000000..80964e2c7 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/describe.go @@ -0,0 +1,31 @@ +package datadog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/datadog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging datadog describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/datadog/doc.go b/pkg/commands/alias/logging/datadog/doc.go new file mode 100644 index 000000000..c75bb43b3 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/doc.go @@ -0,0 +1,2 @@ +// Package datadog contains deprecated aliases for the 'service logging datadog' commands. +package datadog diff --git a/pkg/commands/alias/logging/datadog/list.go b/pkg/commands/alias/logging/datadog/list.go new file mode 100644 index 000000000..442838b22 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/list.go @@ -0,0 +1,31 @@ +package datadog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/datadog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging datadog list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/datadog/root.go b/pkg/commands/alias/logging/datadog/root.go new file mode 100644 index 000000000..f496e6147 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/root.go @@ -0,0 +1,31 @@ +package datadog + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "datadog" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Datadog logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/datadog/update.go b/pkg/commands/alias/logging/datadog/update.go new file mode 100644 index 000000000..d8e1fa4e7 --- /dev/null +++ b/pkg/commands/alias/logging/datadog/update.go @@ -0,0 +1,29 @@ +package datadog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/datadog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging datadog update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/digitalocean/create.go b/pkg/commands/alias/logging/digitalocean/create.go new file mode 100644 index 000000000..631f0748e --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/create.go @@ -0,0 +1,29 @@ +package digitalocean + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging digitalocean create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/digitalocean/delete.go b/pkg/commands/alias/logging/digitalocean/delete.go new file mode 100644 index 000000000..9ea878bc8 --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/delete.go @@ -0,0 +1,29 @@ +package digitalocean + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging digitalocean delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/digitalocean/describe.go b/pkg/commands/alias/logging/digitalocean/describe.go new file mode 100644 index 000000000..223fbb5b7 --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/describe.go @@ -0,0 +1,31 @@ +package digitalocean + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging digitalocean describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/digitalocean/doc.go b/pkg/commands/alias/logging/digitalocean/doc.go new file mode 100644 index 000000000..7435acd4a --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/doc.go @@ -0,0 +1,2 @@ +// Package digitalocean contains deprecated aliases for the 'service logging digitalocean' commands. +package digitalocean diff --git a/pkg/commands/alias/logging/digitalocean/list.go b/pkg/commands/alias/logging/digitalocean/list.go new file mode 100644 index 000000000..0af68ebf3 --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/list.go @@ -0,0 +1,31 @@ +package digitalocean + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging digitalocean list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/digitalocean/root.go b/pkg/commands/alias/logging/digitalocean/root.go new file mode 100644 index 000000000..a0e6b34d0 --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/root.go @@ -0,0 +1,31 @@ +package digitalocean + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "digitalocean" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version DigitalOcean Spaces logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/digitalocean/update.go b/pkg/commands/alias/logging/digitalocean/update.go new file mode 100644 index 000000000..70bdf1fdb --- /dev/null +++ b/pkg/commands/alias/logging/digitalocean/update.go @@ -0,0 +1,29 @@ +package digitalocean + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging digitalocean update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/doc.go b/pkg/commands/alias/logging/doc.go new file mode 100644 index 000000000..78b504997 --- /dev/null +++ b/pkg/commands/alias/logging/doc.go @@ -0,0 +1,2 @@ +// Package logging contains deprecated aliases for the 'service logging' commands. +package logging diff --git a/pkg/commands/alias/logging/elasticsearch/create.go b/pkg/commands/alias/logging/elasticsearch/create.go new file mode 100644 index 000000000..4cfa6f445 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/create.go @@ -0,0 +1,29 @@ +package elasticsearch + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging elasticsearch create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/elasticsearch/delete.go b/pkg/commands/alias/logging/elasticsearch/delete.go new file mode 100644 index 000000000..e1246bf87 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/delete.go @@ -0,0 +1,29 @@ +package elasticsearch + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging elasticsearch delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/elasticsearch/describe.go b/pkg/commands/alias/logging/elasticsearch/describe.go new file mode 100644 index 000000000..e7e7a31a9 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/describe.go @@ -0,0 +1,31 @@ +package elasticsearch + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging elasticsearch describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/elasticsearch/doc.go b/pkg/commands/alias/logging/elasticsearch/doc.go new file mode 100644 index 000000000..044debad3 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/doc.go @@ -0,0 +1,2 @@ +// Package elasticsearch contains deprecated aliases for the 'service logging elasticsearch' commands. +package elasticsearch diff --git a/pkg/commands/alias/logging/elasticsearch/list.go b/pkg/commands/alias/logging/elasticsearch/list.go new file mode 100644 index 000000000..a680b00ec --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/list.go @@ -0,0 +1,31 @@ +package elasticsearch + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging elasticsearch list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/elasticsearch/root.go b/pkg/commands/alias/logging/elasticsearch/root.go new file mode 100644 index 000000000..5ebb09629 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/root.go @@ -0,0 +1,31 @@ +package elasticsearch + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "elasticsearch" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Elasticsearch logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/elasticsearch/update.go b/pkg/commands/alias/logging/elasticsearch/update.go new file mode 100644 index 000000000..765e390d1 --- /dev/null +++ b/pkg/commands/alias/logging/elasticsearch/update.go @@ -0,0 +1,29 @@ +package elasticsearch + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging elasticsearch update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/ftp/create.go b/pkg/commands/alias/logging/ftp/create.go new file mode 100644 index 000000000..e923ddc41 --- /dev/null +++ b/pkg/commands/alias/logging/ftp/create.go @@ -0,0 +1,29 @@ +package ftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/ftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging ftp create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/ftp/delete.go b/pkg/commands/alias/logging/ftp/delete.go new file mode 100644 index 000000000..4b92d6739 --- /dev/null +++ b/pkg/commands/alias/logging/ftp/delete.go @@ -0,0 +1,29 @@ +package ftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/ftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging ftp delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/ftp/describe.go b/pkg/commands/alias/logging/ftp/describe.go new file mode 100644 index 000000000..a4a9b295d --- /dev/null +++ b/pkg/commands/alias/logging/ftp/describe.go @@ -0,0 +1,31 @@ +package ftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/ftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging ftp describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/ftp/doc.go b/pkg/commands/alias/logging/ftp/doc.go new file mode 100644 index 000000000..6b29c85b1 --- /dev/null +++ b/pkg/commands/alias/logging/ftp/doc.go @@ -0,0 +1,2 @@ +// Package ftp contains deprecated aliases for the 'service logging ftp' commands. +package ftp diff --git a/pkg/commands/alias/logging/ftp/list.go b/pkg/commands/alias/logging/ftp/list.go new file mode 100644 index 000000000..964c4ce1f --- /dev/null +++ b/pkg/commands/alias/logging/ftp/list.go @@ -0,0 +1,31 @@ +package ftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/ftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging ftp list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/ftp/root.go b/pkg/commands/alias/logging/ftp/root.go new file mode 100644 index 000000000..8ad4d9a62 --- /dev/null +++ b/pkg/commands/alias/logging/ftp/root.go @@ -0,0 +1,31 @@ +package ftp + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "ftp" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version FTP logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/ftp/update.go b/pkg/commands/alias/logging/ftp/update.go new file mode 100644 index 000000000..427f361d1 --- /dev/null +++ b/pkg/commands/alias/logging/ftp/update.go @@ -0,0 +1,29 @@ +package ftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/ftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging ftp update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/gcs/create.go b/pkg/commands/alias/logging/gcs/create.go new file mode 100644 index 000000000..8925d8bd9 --- /dev/null +++ b/pkg/commands/alias/logging/gcs/create.go @@ -0,0 +1,29 @@ +package gcs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/gcs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging gcs create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/gcs/delete.go b/pkg/commands/alias/logging/gcs/delete.go new file mode 100644 index 000000000..72c4a80f5 --- /dev/null +++ b/pkg/commands/alias/logging/gcs/delete.go @@ -0,0 +1,29 @@ +package gcs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/gcs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging gcs delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/gcs/describe.go b/pkg/commands/alias/logging/gcs/describe.go new file mode 100644 index 000000000..c4fcef65c --- /dev/null +++ b/pkg/commands/alias/logging/gcs/describe.go @@ -0,0 +1,31 @@ +package gcs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/gcs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging gcs describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/gcs/doc.go b/pkg/commands/alias/logging/gcs/doc.go new file mode 100644 index 000000000..ecd8204c7 --- /dev/null +++ b/pkg/commands/alias/logging/gcs/doc.go @@ -0,0 +1,2 @@ +// Package gcs contains deprecated aliases for the 'service logging gcs' commands. +package gcs diff --git a/pkg/commands/alias/logging/gcs/list.go b/pkg/commands/alias/logging/gcs/list.go new file mode 100644 index 000000000..beef87e86 --- /dev/null +++ b/pkg/commands/alias/logging/gcs/list.go @@ -0,0 +1,31 @@ +package gcs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/gcs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging gcs list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/gcs/root.go b/pkg/commands/alias/logging/gcs/root.go new file mode 100644 index 000000000..bb3565a4d --- /dev/null +++ b/pkg/commands/alias/logging/gcs/root.go @@ -0,0 +1,31 @@ +package gcs + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "gcs" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Google Cloud Storage logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/gcs/update.go b/pkg/commands/alias/logging/gcs/update.go new file mode 100644 index 000000000..508531589 --- /dev/null +++ b/pkg/commands/alias/logging/gcs/update.go @@ -0,0 +1,29 @@ +package gcs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/gcs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging gcs update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/googlepubsub/create.go b/pkg/commands/alias/logging/googlepubsub/create.go new file mode 100644 index 000000000..81159ae00 --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/create.go @@ -0,0 +1,29 @@ +package googlepubsub + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging googlepubsub create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/googlepubsub/delete.go b/pkg/commands/alias/logging/googlepubsub/delete.go new file mode 100644 index 000000000..c70ef3766 --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/delete.go @@ -0,0 +1,29 @@ +package googlepubsub + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging googlepubsub delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/googlepubsub/describe.go b/pkg/commands/alias/logging/googlepubsub/describe.go new file mode 100644 index 000000000..cc6509a46 --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/describe.go @@ -0,0 +1,31 @@ +package googlepubsub + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging googlepubsub describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/googlepubsub/doc.go b/pkg/commands/alias/logging/googlepubsub/doc.go new file mode 100644 index 000000000..47edeb526 --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/doc.go @@ -0,0 +1,2 @@ +// Package googlepubsub contains deprecated aliases for the 'service logging googlepubsub' commands. +package googlepubsub diff --git a/pkg/commands/alias/logging/googlepubsub/list.go b/pkg/commands/alias/logging/googlepubsub/list.go new file mode 100644 index 000000000..8f99c8670 --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/list.go @@ -0,0 +1,31 @@ +package googlepubsub + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging googlepubsub list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/googlepubsub/root.go b/pkg/commands/alias/logging/googlepubsub/root.go new file mode 100644 index 000000000..3c8a6dc6a --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/root.go @@ -0,0 +1,31 @@ +package googlepubsub + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "googlepubsub" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Google Cloud Pub/Sub logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/googlepubsub/update.go b/pkg/commands/alias/logging/googlepubsub/update.go new file mode 100644 index 000000000..f77c55d4d --- /dev/null +++ b/pkg/commands/alias/logging/googlepubsub/update.go @@ -0,0 +1,29 @@ +package googlepubsub + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging googlepubsub update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/create.go b/pkg/commands/alias/logging/grafanacloudlogs/create.go new file mode 100644 index 000000000..3ee111109 --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/create.go @@ -0,0 +1,29 @@ +package grafanacloudlogs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging grafanacloudlogs create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/delete.go b/pkg/commands/alias/logging/grafanacloudlogs/delete.go new file mode 100644 index 000000000..b688d4c47 --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/delete.go @@ -0,0 +1,29 @@ +package grafanacloudlogs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging grafanacloudlogs delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/describe.go b/pkg/commands/alias/logging/grafanacloudlogs/describe.go new file mode 100644 index 000000000..1fa16ae5b --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/describe.go @@ -0,0 +1,31 @@ +package grafanacloudlogs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging grafanacloudlogs describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/doc.go b/pkg/commands/alias/logging/grafanacloudlogs/doc.go new file mode 100644 index 000000000..9000891ac --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/doc.go @@ -0,0 +1,2 @@ +// Package grafanacloudlogs contains deprecated aliases for the 'service logging grafanacloudlogs' commands. +package grafanacloudlogs diff --git a/pkg/commands/alias/logging/grafanacloudlogs/list.go b/pkg/commands/alias/logging/grafanacloudlogs/list.go new file mode 100644 index 000000000..a4b38dce2 --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/list.go @@ -0,0 +1,31 @@ +package grafanacloudlogs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging grafanacloudlogs list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/root.go b/pkg/commands/alias/logging/grafanacloudlogs/root.go new file mode 100644 index 000000000..16da0389f --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/root.go @@ -0,0 +1,31 @@ +package grafanacloudlogs + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "grafanacloudlogs" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Grafana Cloud Logs logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/grafanacloudlogs/update.go b/pkg/commands/alias/logging/grafanacloudlogs/update.go new file mode 100644 index 000000000..3d65a592c --- /dev/null +++ b/pkg/commands/alias/logging/grafanacloudlogs/update.go @@ -0,0 +1,29 @@ +package grafanacloudlogs + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging grafanacloudlogs update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/heroku/create.go b/pkg/commands/alias/logging/heroku/create.go new file mode 100644 index 000000000..2f1f7234f --- /dev/null +++ b/pkg/commands/alias/logging/heroku/create.go @@ -0,0 +1,29 @@ +package heroku + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/heroku" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging heroku create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/heroku/delete.go b/pkg/commands/alias/logging/heroku/delete.go new file mode 100644 index 000000000..adaf41357 --- /dev/null +++ b/pkg/commands/alias/logging/heroku/delete.go @@ -0,0 +1,29 @@ +package heroku + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/heroku" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging heroku delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/heroku/describe.go b/pkg/commands/alias/logging/heroku/describe.go new file mode 100644 index 000000000..d2c46c737 --- /dev/null +++ b/pkg/commands/alias/logging/heroku/describe.go @@ -0,0 +1,31 @@ +package heroku + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/heroku" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging heroku describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/heroku/doc.go b/pkg/commands/alias/logging/heroku/doc.go new file mode 100644 index 000000000..5c630d4ee --- /dev/null +++ b/pkg/commands/alias/logging/heroku/doc.go @@ -0,0 +1,2 @@ +// Package heroku contains deprecated aliases for the 'service logging heroku' commands. +package heroku diff --git a/pkg/commands/alias/logging/heroku/list.go b/pkg/commands/alias/logging/heroku/list.go new file mode 100644 index 000000000..bf270a948 --- /dev/null +++ b/pkg/commands/alias/logging/heroku/list.go @@ -0,0 +1,31 @@ +package heroku + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/heroku" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging heroku list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/heroku/root.go b/pkg/commands/alias/logging/heroku/root.go new file mode 100644 index 000000000..8f1d3ba23 --- /dev/null +++ b/pkg/commands/alias/logging/heroku/root.go @@ -0,0 +1,31 @@ +package heroku + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "heroku" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Heroku logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/heroku/update.go b/pkg/commands/alias/logging/heroku/update.go new file mode 100644 index 000000000..a9786cd84 --- /dev/null +++ b/pkg/commands/alias/logging/heroku/update.go @@ -0,0 +1,29 @@ +package heroku + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/heroku" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging heroku update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/honeycomb/create.go b/pkg/commands/alias/logging/honeycomb/create.go new file mode 100644 index 000000000..f479457ec --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/create.go @@ -0,0 +1,29 @@ +package honeycomb + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging honeycomb create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/honeycomb/delete.go b/pkg/commands/alias/logging/honeycomb/delete.go new file mode 100644 index 000000000..b22cc3f0c --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/delete.go @@ -0,0 +1,29 @@ +package honeycomb + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging honeycomb delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/honeycomb/describe.go b/pkg/commands/alias/logging/honeycomb/describe.go new file mode 100644 index 000000000..28dfdc255 --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/describe.go @@ -0,0 +1,31 @@ +package honeycomb + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging honeycomb describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/honeycomb/doc.go b/pkg/commands/alias/logging/honeycomb/doc.go new file mode 100644 index 000000000..1ab648d27 --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/doc.go @@ -0,0 +1,2 @@ +// Package honeycomb contains deprecated aliases for the 'service logging honeycomb' commands. +package honeycomb diff --git a/pkg/commands/alias/logging/honeycomb/list.go b/pkg/commands/alias/logging/honeycomb/list.go new file mode 100644 index 000000000..82f135eb8 --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/list.go @@ -0,0 +1,31 @@ +package honeycomb + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging honeycomb list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/honeycomb/root.go b/pkg/commands/alias/logging/honeycomb/root.go new file mode 100644 index 000000000..f83ee8ca5 --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/root.go @@ -0,0 +1,31 @@ +package honeycomb + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "honeycomb" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Honeycomb logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/honeycomb/update.go b/pkg/commands/alias/logging/honeycomb/update.go new file mode 100644 index 000000000..204ca0244 --- /dev/null +++ b/pkg/commands/alias/logging/honeycomb/update.go @@ -0,0 +1,29 @@ +package honeycomb + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging honeycomb update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/https/create.go b/pkg/commands/alias/logging/https/create.go new file mode 100644 index 000000000..e8568ea5d --- /dev/null +++ b/pkg/commands/alias/logging/https/create.go @@ -0,0 +1,29 @@ +package https + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/https" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging https create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/https/delete.go b/pkg/commands/alias/logging/https/delete.go new file mode 100644 index 000000000..6b578db13 --- /dev/null +++ b/pkg/commands/alias/logging/https/delete.go @@ -0,0 +1,29 @@ +package https + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/https" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging https delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/https/describe.go b/pkg/commands/alias/logging/https/describe.go new file mode 100644 index 000000000..947181583 --- /dev/null +++ b/pkg/commands/alias/logging/https/describe.go @@ -0,0 +1,31 @@ +package https + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/https" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging https describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/https/doc.go b/pkg/commands/alias/logging/https/doc.go new file mode 100644 index 000000000..7312bb0cc --- /dev/null +++ b/pkg/commands/alias/logging/https/doc.go @@ -0,0 +1,2 @@ +// Package https contains deprecated aliases for the 'service logging https' commands. +package https diff --git a/pkg/commands/alias/logging/https/list.go b/pkg/commands/alias/logging/https/list.go new file mode 100644 index 000000000..851d67300 --- /dev/null +++ b/pkg/commands/alias/logging/https/list.go @@ -0,0 +1,31 @@ +package https + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/https" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging https list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/https/root.go b/pkg/commands/alias/logging/https/root.go new file mode 100644 index 000000000..c6a425fa9 --- /dev/null +++ b/pkg/commands/alias/logging/https/root.go @@ -0,0 +1,31 @@ +package https + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "https" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version HTTPS logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/https/update.go b/pkg/commands/alias/logging/https/update.go new file mode 100644 index 000000000..28bbd36fb --- /dev/null +++ b/pkg/commands/alias/logging/https/update.go @@ -0,0 +1,29 @@ +package https + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/https" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging https update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kafka/create.go b/pkg/commands/alias/logging/kafka/create.go new file mode 100644 index 000000000..d8ab7524d --- /dev/null +++ b/pkg/commands/alias/logging/kafka/create.go @@ -0,0 +1,29 @@ +package kafka + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kafka" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kafka create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kafka/delete.go b/pkg/commands/alias/logging/kafka/delete.go new file mode 100644 index 000000000..6788af8f9 --- /dev/null +++ b/pkg/commands/alias/logging/kafka/delete.go @@ -0,0 +1,29 @@ +package kafka + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kafka" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kafka delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kafka/describe.go b/pkg/commands/alias/logging/kafka/describe.go new file mode 100644 index 000000000..c2c3b9f8b --- /dev/null +++ b/pkg/commands/alias/logging/kafka/describe.go @@ -0,0 +1,31 @@ +package kafka + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kafka" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging kafka describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kafka/doc.go b/pkg/commands/alias/logging/kafka/doc.go new file mode 100644 index 000000000..853ae02c1 --- /dev/null +++ b/pkg/commands/alias/logging/kafka/doc.go @@ -0,0 +1,2 @@ +// Package kafka contains deprecated aliases for the 'service logging kafka' commands. +package kafka diff --git a/pkg/commands/alias/logging/kafka/list.go b/pkg/commands/alias/logging/kafka/list.go new file mode 100644 index 000000000..41ce0afcd --- /dev/null +++ b/pkg/commands/alias/logging/kafka/list.go @@ -0,0 +1,31 @@ +package kafka + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kafka" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging kafka list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kafka/root.go b/pkg/commands/alias/logging/kafka/root.go new file mode 100644 index 000000000..3b33118c7 --- /dev/null +++ b/pkg/commands/alias/logging/kafka/root.go @@ -0,0 +1,31 @@ +package kafka + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "kafka" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Kafka logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/kafka/update.go b/pkg/commands/alias/logging/kafka/update.go new file mode 100644 index 000000000..4395bdcfd --- /dev/null +++ b/pkg/commands/alias/logging/kafka/update.go @@ -0,0 +1,29 @@ +package kafka + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kafka" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kafka update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kinesis/create.go b/pkg/commands/alias/logging/kinesis/create.go new file mode 100644 index 000000000..873544275 --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/create.go @@ -0,0 +1,29 @@ +package kinesis + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kinesis create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kinesis/delete.go b/pkg/commands/alias/logging/kinesis/delete.go new file mode 100644 index 000000000..db36ee70b --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/delete.go @@ -0,0 +1,29 @@ +package kinesis + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kinesis delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kinesis/describe.go b/pkg/commands/alias/logging/kinesis/describe.go new file mode 100644 index 000000000..152e02e83 --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/describe.go @@ -0,0 +1,31 @@ +package kinesis + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging kinesis describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kinesis/doc.go b/pkg/commands/alias/logging/kinesis/doc.go new file mode 100644 index 000000000..819978daf --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/doc.go @@ -0,0 +1,2 @@ +// Package kinesis contains deprecated aliases for the 'service logging kinesis' commands. +package kinesis diff --git a/pkg/commands/alias/logging/kinesis/list.go b/pkg/commands/alias/logging/kinesis/list.go new file mode 100644 index 000000000..4426fd3af --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/list.go @@ -0,0 +1,31 @@ +package kinesis + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging kinesis list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/kinesis/root.go b/pkg/commands/alias/logging/kinesis/root.go new file mode 100644 index 000000000..5be9d679d --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/root.go @@ -0,0 +1,31 @@ +package kinesis + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "kinesis" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Amazon Kinesis logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/kinesis/update.go b/pkg/commands/alias/logging/kinesis/update.go new file mode 100644 index 000000000..b02fe433b --- /dev/null +++ b/pkg/commands/alias/logging/kinesis/update.go @@ -0,0 +1,29 @@ +package kinesis + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging kinesis update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/loggly/create.go b/pkg/commands/alias/logging/loggly/create.go new file mode 100644 index 000000000..68a8b3764 --- /dev/null +++ b/pkg/commands/alias/logging/loggly/create.go @@ -0,0 +1,29 @@ +package loggly + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/loggly" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging loggly create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/loggly/delete.go b/pkg/commands/alias/logging/loggly/delete.go new file mode 100644 index 000000000..c2c256b9b --- /dev/null +++ b/pkg/commands/alias/logging/loggly/delete.go @@ -0,0 +1,29 @@ +package loggly + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/loggly" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging loggly delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/loggly/describe.go b/pkg/commands/alias/logging/loggly/describe.go new file mode 100644 index 000000000..cdc707c62 --- /dev/null +++ b/pkg/commands/alias/logging/loggly/describe.go @@ -0,0 +1,31 @@ +package loggly + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/loggly" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging loggly describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/loggly/doc.go b/pkg/commands/alias/logging/loggly/doc.go new file mode 100644 index 000000000..697b167f5 --- /dev/null +++ b/pkg/commands/alias/logging/loggly/doc.go @@ -0,0 +1,2 @@ +// Package loggly contains deprecated aliases for the 'service logging loggly' commands. +package loggly diff --git a/pkg/commands/alias/logging/loggly/list.go b/pkg/commands/alias/logging/loggly/list.go new file mode 100644 index 000000000..0c383f286 --- /dev/null +++ b/pkg/commands/alias/logging/loggly/list.go @@ -0,0 +1,31 @@ +package loggly + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/loggly" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging loggly list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/loggly/root.go b/pkg/commands/alias/logging/loggly/root.go new file mode 100644 index 000000000..89d4756e5 --- /dev/null +++ b/pkg/commands/alias/logging/loggly/root.go @@ -0,0 +1,31 @@ +package loggly + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "loggly" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Loggly logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/loggly/update.go b/pkg/commands/alias/logging/loggly/update.go new file mode 100644 index 000000000..aace3ce4b --- /dev/null +++ b/pkg/commands/alias/logging/loggly/update.go @@ -0,0 +1,29 @@ +package loggly + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/loggly" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging loggly update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/logshuttle/create.go b/pkg/commands/alias/logging/logshuttle/create.go new file mode 100644 index 000000000..97c457cb9 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/create.go @@ -0,0 +1,29 @@ +package logshuttle + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging logshuttle create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/logshuttle/delete.go b/pkg/commands/alias/logging/logshuttle/delete.go new file mode 100644 index 000000000..5613c2ad0 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/delete.go @@ -0,0 +1,29 @@ +package logshuttle + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging logshuttle delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/logshuttle/describe.go b/pkg/commands/alias/logging/logshuttle/describe.go new file mode 100644 index 000000000..7e675fd60 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/describe.go @@ -0,0 +1,31 @@ +package logshuttle + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging logshuttle describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/logshuttle/doc.go b/pkg/commands/alias/logging/logshuttle/doc.go new file mode 100644 index 000000000..0c94655d3 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/doc.go @@ -0,0 +1,2 @@ +// Package logshuttle contains deprecated aliases for the 'service logging logshuttle' commands. +package logshuttle diff --git a/pkg/commands/alias/logging/logshuttle/list.go b/pkg/commands/alias/logging/logshuttle/list.go new file mode 100644 index 000000000..b6b8ca249 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/list.go @@ -0,0 +1,31 @@ +package logshuttle + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging logshuttle list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/logshuttle/root.go b/pkg/commands/alias/logging/logshuttle/root.go new file mode 100644 index 000000000..4a3d79f0f --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/root.go @@ -0,0 +1,31 @@ +package logshuttle + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "logshuttle" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Log Shuttle logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/logshuttle/update.go b/pkg/commands/alias/logging/logshuttle/update.go new file mode 100644 index 000000000..65ed71646 --- /dev/null +++ b/pkg/commands/alias/logging/logshuttle/update.go @@ -0,0 +1,29 @@ +package logshuttle + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging logshuttle update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelic/create.go b/pkg/commands/alias/logging/newrelic/create.go new file mode 100644 index 000000000..6ada5cbb7 --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/create.go @@ -0,0 +1,29 @@ +package newrelic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelic create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelic/delete.go b/pkg/commands/alias/logging/newrelic/delete.go new file mode 100644 index 000000000..666f2177f --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/delete.go @@ -0,0 +1,29 @@ +package newrelic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelic delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelic/describe.go b/pkg/commands/alias/logging/newrelic/describe.go new file mode 100644 index 000000000..fd578be58 --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/describe.go @@ -0,0 +1,31 @@ +package newrelic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging newrelic describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelic/doc.go b/pkg/commands/alias/logging/newrelic/doc.go new file mode 100644 index 000000000..8d20c2f5f --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/doc.go @@ -0,0 +1,2 @@ +// Package newrelic contains deprecated aliases for the 'service logging newrelic' commands. +package newrelic diff --git a/pkg/commands/alias/logging/newrelic/list.go b/pkg/commands/alias/logging/newrelic/list.go new file mode 100644 index 000000000..c8a34748e --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/list.go @@ -0,0 +1,31 @@ +package newrelic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging newrelic list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelic/root.go b/pkg/commands/alias/logging/newrelic/root.go new file mode 100644 index 000000000..c2b401337 --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/root.go @@ -0,0 +1,31 @@ +package newrelic + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "newrelic" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version New Relic logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/newrelic/update.go b/pkg/commands/alias/logging/newrelic/update.go new file mode 100644 index 000000000..f5ea2eda5 --- /dev/null +++ b/pkg/commands/alias/logging/newrelic/update.go @@ -0,0 +1,29 @@ +package newrelic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelic update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelicotlp/create.go b/pkg/commands/alias/logging/newrelicotlp/create.go new file mode 100644 index 000000000..6e0f27439 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/create.go @@ -0,0 +1,29 @@ +package newrelicotlp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelicotlp create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelicotlp/delete.go b/pkg/commands/alias/logging/newrelicotlp/delete.go new file mode 100644 index 000000000..5b88a1000 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/delete.go @@ -0,0 +1,29 @@ +package newrelicotlp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelicotlp delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelicotlp/describe.go b/pkg/commands/alias/logging/newrelicotlp/describe.go new file mode 100644 index 000000000..64ad1a4e3 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/describe.go @@ -0,0 +1,31 @@ +package newrelicotlp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging newrelicotlp describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelicotlp/doc.go b/pkg/commands/alias/logging/newrelicotlp/doc.go new file mode 100644 index 000000000..b09e54260 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/doc.go @@ -0,0 +1,2 @@ +// Package newrelicotlp contains deprecated aliases for the 'service logging newrelicotlp' commands. +package newrelicotlp diff --git a/pkg/commands/alias/logging/newrelicotlp/list.go b/pkg/commands/alias/logging/newrelicotlp/list.go new file mode 100644 index 000000000..60ced4609 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/list.go @@ -0,0 +1,31 @@ +package newrelicotlp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging newrelicotlp list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/newrelicotlp/root.go b/pkg/commands/alias/logging/newrelicotlp/root.go new file mode 100644 index 000000000..225dadde5 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/root.go @@ -0,0 +1,31 @@ +package newrelicotlp + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "newrelicotlp" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version New Relic OTLP logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/newrelicotlp/update.go b/pkg/commands/alias/logging/newrelicotlp/update.go new file mode 100644 index 000000000..4868fe660 --- /dev/null +++ b/pkg/commands/alias/logging/newrelicotlp/update.go @@ -0,0 +1,29 @@ +package newrelicotlp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging newrelicotlp update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/openstack/create.go b/pkg/commands/alias/logging/openstack/create.go new file mode 100644 index 000000000..e43a78e33 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/create.go @@ -0,0 +1,29 @@ +package openstack + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/openstack" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging openstack create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/openstack/delete.go b/pkg/commands/alias/logging/openstack/delete.go new file mode 100644 index 000000000..b275a97ef --- /dev/null +++ b/pkg/commands/alias/logging/openstack/delete.go @@ -0,0 +1,29 @@ +package openstack + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/openstack" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging openstack delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/openstack/describe.go b/pkg/commands/alias/logging/openstack/describe.go new file mode 100644 index 000000000..6474a75a5 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/describe.go @@ -0,0 +1,31 @@ +package openstack + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/openstack" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging openstack describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/openstack/doc.go b/pkg/commands/alias/logging/openstack/doc.go new file mode 100644 index 000000000..29e237af8 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/doc.go @@ -0,0 +1,2 @@ +// Package openstack contains deprecated aliases for the 'service logging openstack' commands. +package openstack diff --git a/pkg/commands/alias/logging/openstack/list.go b/pkg/commands/alias/logging/openstack/list.go new file mode 100644 index 000000000..61d728d65 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/list.go @@ -0,0 +1,31 @@ +package openstack + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/openstack" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging openstack list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/openstack/root.go b/pkg/commands/alias/logging/openstack/root.go new file mode 100644 index 000000000..3d28ce5f2 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/root.go @@ -0,0 +1,31 @@ +package openstack + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "openstack" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version OpenStack Swift logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/openstack/update.go b/pkg/commands/alias/logging/openstack/update.go new file mode 100644 index 000000000..7a7129de1 --- /dev/null +++ b/pkg/commands/alias/logging/openstack/update.go @@ -0,0 +1,29 @@ +package openstack + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/openstack" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging openstack update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/papertrail/create.go b/pkg/commands/alias/logging/papertrail/create.go new file mode 100644 index 000000000..2234ba68f --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/create.go @@ -0,0 +1,29 @@ +package papertrail + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging papertrail create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/papertrail/delete.go b/pkg/commands/alias/logging/papertrail/delete.go new file mode 100644 index 000000000..c3a3a9ce3 --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/delete.go @@ -0,0 +1,29 @@ +package papertrail + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging papertrail delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/papertrail/describe.go b/pkg/commands/alias/logging/papertrail/describe.go new file mode 100644 index 000000000..48f823c29 --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/describe.go @@ -0,0 +1,31 @@ +package papertrail + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging papertrail describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/papertrail/doc.go b/pkg/commands/alias/logging/papertrail/doc.go new file mode 100644 index 000000000..0affa9a73 --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/doc.go @@ -0,0 +1,2 @@ +// Package papertrail contains deprecated aliases for the 'service logging papertrail' commands. +package papertrail diff --git a/pkg/commands/alias/logging/papertrail/list.go b/pkg/commands/alias/logging/papertrail/list.go new file mode 100644 index 000000000..e4f22f4d9 --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/list.go @@ -0,0 +1,31 @@ +package papertrail + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging papertrail list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/papertrail/root.go b/pkg/commands/alias/logging/papertrail/root.go new file mode 100644 index 000000000..b24eed726 --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/root.go @@ -0,0 +1,31 @@ +package papertrail + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "papertrail" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Papertrail logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/papertrail/update.go b/pkg/commands/alias/logging/papertrail/update.go new file mode 100644 index 000000000..6c8a3cd2c --- /dev/null +++ b/pkg/commands/alias/logging/papertrail/update.go @@ -0,0 +1,29 @@ +package papertrail + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging papertrail update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/root.go b/pkg/commands/alias/logging/root.go new file mode 100644 index 000000000..8cfe0f1bd --- /dev/null +++ b/pkg/commands/alias/logging/root.go @@ -0,0 +1,31 @@ +package logging + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "logging" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/s3/create.go b/pkg/commands/alias/logging/s3/create.go new file mode 100644 index 000000000..d4d5099e6 --- /dev/null +++ b/pkg/commands/alias/logging/s3/create.go @@ -0,0 +1,29 @@ +package s3 + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/s3" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging s3 create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/s3/delete.go b/pkg/commands/alias/logging/s3/delete.go new file mode 100644 index 000000000..3f60e77b2 --- /dev/null +++ b/pkg/commands/alias/logging/s3/delete.go @@ -0,0 +1,29 @@ +package s3 + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/s3" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging s3 delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/s3/describe.go b/pkg/commands/alias/logging/s3/describe.go new file mode 100644 index 000000000..f71215cc3 --- /dev/null +++ b/pkg/commands/alias/logging/s3/describe.go @@ -0,0 +1,31 @@ +package s3 + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/s3" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging s3 describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/s3/doc.go b/pkg/commands/alias/logging/s3/doc.go new file mode 100644 index 000000000..5a162f70f --- /dev/null +++ b/pkg/commands/alias/logging/s3/doc.go @@ -0,0 +1,2 @@ +// Package s3 contains deprecated aliases for the 'service logging s3' commands. +package s3 diff --git a/pkg/commands/alias/logging/s3/list.go b/pkg/commands/alias/logging/s3/list.go new file mode 100644 index 000000000..79a107ed7 --- /dev/null +++ b/pkg/commands/alias/logging/s3/list.go @@ -0,0 +1,31 @@ +package s3 + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/s3" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging s3 list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/s3/root.go b/pkg/commands/alias/logging/s3/root.go new file mode 100644 index 000000000..24cdc0057 --- /dev/null +++ b/pkg/commands/alias/logging/s3/root.go @@ -0,0 +1,31 @@ +package s3 + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "s3" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Amazon S3 logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/s3/update.go b/pkg/commands/alias/logging/s3/update.go new file mode 100644 index 000000000..c8520b28c --- /dev/null +++ b/pkg/commands/alias/logging/s3/update.go @@ -0,0 +1,29 @@ +package s3 + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/s3" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging s3 update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/scalyr/create.go b/pkg/commands/alias/logging/scalyr/create.go new file mode 100644 index 000000000..cb1251059 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/create.go @@ -0,0 +1,29 @@ +package scalyr + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging scalyr create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/scalyr/delete.go b/pkg/commands/alias/logging/scalyr/delete.go new file mode 100644 index 000000000..c31c65cd4 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/delete.go @@ -0,0 +1,29 @@ +package scalyr + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging scalyr delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/scalyr/describe.go b/pkg/commands/alias/logging/scalyr/describe.go new file mode 100644 index 000000000..f5c302093 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/describe.go @@ -0,0 +1,31 @@ +package scalyr + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging scalyr describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/scalyr/doc.go b/pkg/commands/alias/logging/scalyr/doc.go new file mode 100644 index 000000000..58cfb3dcb --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/doc.go @@ -0,0 +1,2 @@ +// Package scalyr contains deprecated aliases for the 'service logging scalyr' commands. +package scalyr diff --git a/pkg/commands/alias/logging/scalyr/list.go b/pkg/commands/alias/logging/scalyr/list.go new file mode 100644 index 000000000..f48971035 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/list.go @@ -0,0 +1,31 @@ +package scalyr + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging scalyr list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/scalyr/root.go b/pkg/commands/alias/logging/scalyr/root.go new file mode 100644 index 000000000..fa2df6752 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/root.go @@ -0,0 +1,31 @@ +package scalyr + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "scalyr" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Scalyr logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/scalyr/update.go b/pkg/commands/alias/logging/scalyr/update.go new file mode 100644 index 000000000..e0e4bc688 --- /dev/null +++ b/pkg/commands/alias/logging/scalyr/update.go @@ -0,0 +1,29 @@ +package scalyr + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging scalyr update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sftp/create.go b/pkg/commands/alias/logging/sftp/create.go new file mode 100644 index 000000000..fa9fd1d74 --- /dev/null +++ b/pkg/commands/alias/logging/sftp/create.go @@ -0,0 +1,29 @@ +package sftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sftp create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sftp/delete.go b/pkg/commands/alias/logging/sftp/delete.go new file mode 100644 index 000000000..f7393600f --- /dev/null +++ b/pkg/commands/alias/logging/sftp/delete.go @@ -0,0 +1,29 @@ +package sftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sftp delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sftp/describe.go b/pkg/commands/alias/logging/sftp/describe.go new file mode 100644 index 000000000..75d6cbf6f --- /dev/null +++ b/pkg/commands/alias/logging/sftp/describe.go @@ -0,0 +1,31 @@ +package sftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging sftp describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sftp/doc.go b/pkg/commands/alias/logging/sftp/doc.go new file mode 100644 index 000000000..b3e43fec3 --- /dev/null +++ b/pkg/commands/alias/logging/sftp/doc.go @@ -0,0 +1,2 @@ +// Package sftp contains deprecated aliases for the 'service logging sftp' commands. +package sftp diff --git a/pkg/commands/alias/logging/sftp/list.go b/pkg/commands/alias/logging/sftp/list.go new file mode 100644 index 000000000..db1fb173f --- /dev/null +++ b/pkg/commands/alias/logging/sftp/list.go @@ -0,0 +1,31 @@ +package sftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging sftp list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sftp/root.go b/pkg/commands/alias/logging/sftp/root.go new file mode 100644 index 000000000..c6332fb44 --- /dev/null +++ b/pkg/commands/alias/logging/sftp/root.go @@ -0,0 +1,31 @@ +package sftp + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "sftp" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version SFTP logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/sftp/update.go b/pkg/commands/alias/logging/sftp/update.go new file mode 100644 index 000000000..7f82513ff --- /dev/null +++ b/pkg/commands/alias/logging/sftp/update.go @@ -0,0 +1,29 @@ +package sftp + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sftp" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sftp update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/splunk/create.go b/pkg/commands/alias/logging/splunk/create.go new file mode 100644 index 000000000..17484799f --- /dev/null +++ b/pkg/commands/alias/logging/splunk/create.go @@ -0,0 +1,29 @@ +package splunk + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/splunk" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging splunk create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/splunk/delete.go b/pkg/commands/alias/logging/splunk/delete.go new file mode 100644 index 000000000..e590093e5 --- /dev/null +++ b/pkg/commands/alias/logging/splunk/delete.go @@ -0,0 +1,29 @@ +package splunk + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/splunk" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging splunk delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/splunk/describe.go b/pkg/commands/alias/logging/splunk/describe.go new file mode 100644 index 000000000..0ce9e6169 --- /dev/null +++ b/pkg/commands/alias/logging/splunk/describe.go @@ -0,0 +1,31 @@ +package splunk + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/splunk" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging splunk describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/splunk/doc.go b/pkg/commands/alias/logging/splunk/doc.go new file mode 100644 index 000000000..fc0ae9a3d --- /dev/null +++ b/pkg/commands/alias/logging/splunk/doc.go @@ -0,0 +1,2 @@ +// Package splunk contains deprecated aliases for the 'service logging splunk' commands. +package splunk diff --git a/pkg/commands/alias/logging/splunk/list.go b/pkg/commands/alias/logging/splunk/list.go new file mode 100644 index 000000000..dee917129 --- /dev/null +++ b/pkg/commands/alias/logging/splunk/list.go @@ -0,0 +1,31 @@ +package splunk + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/splunk" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging splunk list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/splunk/root.go b/pkg/commands/alias/logging/splunk/root.go new file mode 100644 index 000000000..5f12db453 --- /dev/null +++ b/pkg/commands/alias/logging/splunk/root.go @@ -0,0 +1,31 @@ +package splunk + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "splunk" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Splunk logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/splunk/update.go b/pkg/commands/alias/logging/splunk/update.go new file mode 100644 index 000000000..f3c8a839d --- /dev/null +++ b/pkg/commands/alias/logging/splunk/update.go @@ -0,0 +1,29 @@ +package splunk + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/splunk" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging splunk update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sumologic/create.go b/pkg/commands/alias/logging/sumologic/create.go new file mode 100644 index 000000000..a8ca9a09b --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/create.go @@ -0,0 +1,29 @@ +package sumologic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sumologic create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sumologic/delete.go b/pkg/commands/alias/logging/sumologic/delete.go new file mode 100644 index 000000000..0ba3cfa5e --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/delete.go @@ -0,0 +1,29 @@ +package sumologic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sumologic delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sumologic/describe.go b/pkg/commands/alias/logging/sumologic/describe.go new file mode 100644 index 000000000..154d499f0 --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/describe.go @@ -0,0 +1,31 @@ +package sumologic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging sumologic describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sumologic/doc.go b/pkg/commands/alias/logging/sumologic/doc.go new file mode 100644 index 000000000..f93f7f2d4 --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/doc.go @@ -0,0 +1,2 @@ +// Package sumologic contains deprecated aliases for the 'service logging sumologic' commands. +package sumologic diff --git a/pkg/commands/alias/logging/sumologic/list.go b/pkg/commands/alias/logging/sumologic/list.go new file mode 100644 index 000000000..a4d7a307b --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/list.go @@ -0,0 +1,31 @@ +package sumologic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging sumologic list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/sumologic/root.go b/pkg/commands/alias/logging/sumologic/root.go new file mode 100644 index 000000000..cfc76a648 --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/root.go @@ -0,0 +1,31 @@ +package sumologic + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "sumologic" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Sumo Logic logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/sumologic/update.go b/pkg/commands/alias/logging/sumologic/update.go new file mode 100644 index 000000000..23c76a368 --- /dev/null +++ b/pkg/commands/alias/logging/sumologic/update.go @@ -0,0 +1,29 @@ +package sumologic + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging sumologic update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/syslog/create.go b/pkg/commands/alias/logging/syslog/create.go new file mode 100644 index 000000000..617654ddf --- /dev/null +++ b/pkg/commands/alias/logging/syslog/create.go @@ -0,0 +1,29 @@ +package syslog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/syslog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// CreateCommand wraps the CreateCommand from the newcmd package. +type CreateCommand struct { + *newcmd.CreateCommand +} + +// NewCreateCommand returns a usable command registered under the parent. +func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateCommand { + c := CreateCommand{newcmd.NewCreateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *CreateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging syslog create' command instead.") + return c.CreateCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/syslog/delete.go b/pkg/commands/alias/logging/syslog/delete.go new file mode 100644 index 000000000..61cca0d16 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/delete.go @@ -0,0 +1,29 @@ +package syslog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/syslog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DeleteCommand wraps the DeleteCommand from the newcmd package. +type DeleteCommand struct { + *newcmd.DeleteCommand +} + +// NewDeleteCommand returns a usable command registered under the parent. +func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { + c := DeleteCommand{newcmd.NewDeleteCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DeleteCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging syslog delete' command instead.") + return c.DeleteCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/syslog/describe.go b/pkg/commands/alias/logging/syslog/describe.go new file mode 100644 index 000000000..acd4cf016 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/describe.go @@ -0,0 +1,31 @@ +package syslog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/syslog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// DescribeCommand wraps the DescribeCommand from the newcmd package. +type DescribeCommand struct { + *newcmd.DescribeCommand +} + +// NewDescribeCommand returns a usable command registered under the parent. +func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { + c := DescribeCommand{newcmd.NewDescribeCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *DescribeCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging syslog describe' command instead.") + } + return c.DescribeCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/syslog/doc.go b/pkg/commands/alias/logging/syslog/doc.go new file mode 100644 index 000000000..33b2c1098 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/doc.go @@ -0,0 +1,2 @@ +// Package syslog contains deprecated aliases for the 'service logging syslog' commands. +package syslog diff --git a/pkg/commands/alias/logging/syslog/list.go b/pkg/commands/alias/logging/syslog/list.go new file mode 100644 index 000000000..fc55679d0 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/list.go @@ -0,0 +1,31 @@ +package syslog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/syslog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// ListCommand wraps the ListCommand from the newcmd package. +type ListCommand struct { + *newcmd.ListCommand +} + +// NewListCommand returns a usable command registered under the parent. +func NewListCommand(parent argparser.Registerer, g *global.Data) *ListCommand { + c := ListCommand{newcmd.NewListCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *ListCommand) Exec(in io.Reader, out io.Writer) error { + if !c.JSONOutput.Enabled { + text.Deprecated(out, "Use the 'service logging syslog list' command instead.") + } + return c.ListCommand.Exec(in, out) +} diff --git a/pkg/commands/alias/logging/syslog/root.go b/pkg/commands/alias/logging/syslog/root.go new file mode 100644 index 000000000..d80a24852 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/root.go @@ -0,0 +1,31 @@ +package syslog + +import ( + "io" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" +) + +// RootCommand is the parent command for all subcommands in this package. +// It should be installed under the primary root command. +type RootCommand struct { + argparser.Base + // no flags +} + +// CommandName is the string to be used to invoke this command. +const CommandName = "syslog" + +// NewRootCommand returns a new command registered in the parent. +func NewRootCommand(parent argparser.Registerer, g *global.Data) *RootCommand { + var c RootCommand + c.Globals = g + c.CmdClause = parent.Command(CommandName, "Manipulate Fastly service version Syslog logging endpoints").Hidden() + return &c +} + +// Exec implements the command interface. +func (c *RootCommand) Exec(_ io.Reader, _ io.Writer) error { + panic("unreachable") +} diff --git a/pkg/commands/alias/logging/syslog/update.go b/pkg/commands/alias/logging/syslog/update.go new file mode 100644 index 000000000..31fe07994 --- /dev/null +++ b/pkg/commands/alias/logging/syslog/update.go @@ -0,0 +1,29 @@ +package syslog + +import ( + "io" + + newcmd "github.com/fastly/cli/pkg/commands/service/logging/syslog" + + "github.com/fastly/cli/pkg/argparser" + "github.com/fastly/cli/pkg/global" + "github.com/fastly/cli/pkg/text" +) + +// UpdateCommand wraps the UpdateCommand from the newcmd package. +type UpdateCommand struct { + *newcmd.UpdateCommand +} + +// NewUpdateCommand returns a usable command registered under the parent. +func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateCommand { + c := UpdateCommand{newcmd.NewUpdateCommand(parent, g)} + c.CmdClause.Hidden() + return &c +} + +// Exec implements the command interface. +func (c *UpdateCommand) Exec(in io.Reader, out io.Writer) error { + text.Deprecated(out, "Use the 'service logging syslog update' command instead.") + return c.UpdateCommand.Exec(in, out) +} diff --git a/pkg/commands/commands.go b/pkg/commands/commands.go index a3e558be9..d757bb2f6 100644 --- a/pkg/commands/commands.go +++ b/pkg/commands/commands.go @@ -12,6 +12,34 @@ import ( aliasdictionaryentry "github.com/fastly/cli/pkg/commands/alias/dictionaryentry" aliashealthcheck "github.com/fastly/cli/pkg/commands/alias/healthcheck" aliasimageoptimizerdefaults "github.com/fastly/cli/pkg/commands/alias/imageoptimizerdefaults" + aliaslogging "github.com/fastly/cli/pkg/commands/alias/logging" + aliasazureblob "github.com/fastly/cli/pkg/commands/alias/logging/azureblob" + aliasbigquery "github.com/fastly/cli/pkg/commands/alias/logging/bigquery" + aliascloudfiles "github.com/fastly/cli/pkg/commands/alias/logging/cloudfiles" + aliasdatadog "github.com/fastly/cli/pkg/commands/alias/logging/datadog" + aliasdigitalocean "github.com/fastly/cli/pkg/commands/alias/logging/digitalocean" + aliaselasticsearch "github.com/fastly/cli/pkg/commands/alias/logging/elasticsearch" + aliasftp "github.com/fastly/cli/pkg/commands/alias/logging/ftp" + aliasgcs "github.com/fastly/cli/pkg/commands/alias/logging/gcs" + aliasgooglepubsub "github.com/fastly/cli/pkg/commands/alias/logging/googlepubsub" + aliasgrafanacloudlogs "github.com/fastly/cli/pkg/commands/alias/logging/grafanacloudlogs" + aliasheroku "github.com/fastly/cli/pkg/commands/alias/logging/heroku" + aliashoneycomb "github.com/fastly/cli/pkg/commands/alias/logging/honeycomb" + aliashttps "github.com/fastly/cli/pkg/commands/alias/logging/https" + aliaskafka "github.com/fastly/cli/pkg/commands/alias/logging/kafka" + aliaskinesis "github.com/fastly/cli/pkg/commands/alias/logging/kinesis" + aliasloggly "github.com/fastly/cli/pkg/commands/alias/logging/loggly" + aliaslogshuttle "github.com/fastly/cli/pkg/commands/alias/logging/logshuttle" + aliasnewrelic "github.com/fastly/cli/pkg/commands/alias/logging/newrelic" + aliasnewrelicotlp "github.com/fastly/cli/pkg/commands/alias/logging/newrelicotlp" + aliasopenstack "github.com/fastly/cli/pkg/commands/alias/logging/openstack" + aliaspapertrail "github.com/fastly/cli/pkg/commands/alias/logging/papertrail" + aliass3 "github.com/fastly/cli/pkg/commands/alias/logging/s3" + aliasscalyr "github.com/fastly/cli/pkg/commands/alias/logging/scalyr" + aliassftp "github.com/fastly/cli/pkg/commands/alias/logging/sftp" + aliassplunk "github.com/fastly/cli/pkg/commands/alias/logging/splunk" + aliassumologic "github.com/fastly/cli/pkg/commands/alias/logging/sumologic" + aliassyslog "github.com/fastly/cli/pkg/commands/alias/logging/syslog" aliaspurge "github.com/fastly/cli/pkg/commands/alias/purge" aliasratelimit "github.com/fastly/cli/pkg/commands/alias/ratelimit" aliasresourcelink "github.com/fastly/cli/pkg/commands/alias/resourcelink" @@ -34,34 +62,6 @@ import ( "github.com/fastly/cli/pkg/commands/ip" "github.com/fastly/cli/pkg/commands/kvstore" "github.com/fastly/cli/pkg/commands/kvstoreentry" - "github.com/fastly/cli/pkg/commands/logging" - "github.com/fastly/cli/pkg/commands/logging/azureblob" - "github.com/fastly/cli/pkg/commands/logging/bigquery" - "github.com/fastly/cli/pkg/commands/logging/cloudfiles" - "github.com/fastly/cli/pkg/commands/logging/datadog" - "github.com/fastly/cli/pkg/commands/logging/digitalocean" - "github.com/fastly/cli/pkg/commands/logging/elasticsearch" - "github.com/fastly/cli/pkg/commands/logging/ftp" - "github.com/fastly/cli/pkg/commands/logging/gcs" - "github.com/fastly/cli/pkg/commands/logging/googlepubsub" - "github.com/fastly/cli/pkg/commands/logging/grafanacloudlogs" - "github.com/fastly/cli/pkg/commands/logging/heroku" - "github.com/fastly/cli/pkg/commands/logging/honeycomb" - "github.com/fastly/cli/pkg/commands/logging/https" - "github.com/fastly/cli/pkg/commands/logging/kafka" - "github.com/fastly/cli/pkg/commands/logging/kinesis" - "github.com/fastly/cli/pkg/commands/logging/loggly" - "github.com/fastly/cli/pkg/commands/logging/logshuttle" - "github.com/fastly/cli/pkg/commands/logging/newrelic" - "github.com/fastly/cli/pkg/commands/logging/newrelicotlp" - "github.com/fastly/cli/pkg/commands/logging/openstack" - "github.com/fastly/cli/pkg/commands/logging/papertrail" - "github.com/fastly/cli/pkg/commands/logging/s3" - "github.com/fastly/cli/pkg/commands/logging/scalyr" - "github.com/fastly/cli/pkg/commands/logging/sftp" - "github.com/fastly/cli/pkg/commands/logging/splunk" - "github.com/fastly/cli/pkg/commands/logging/sumologic" - "github.com/fastly/cli/pkg/commands/logging/syslog" "github.com/fastly/cli/pkg/commands/logtail" "github.com/fastly/cli/pkg/commands/ngwaf" "github.com/fastly/cli/pkg/commands/ngwaf/countrylist" @@ -109,6 +109,34 @@ import ( servicedomain "github.com/fastly/cli/pkg/commands/service/domain" servicehealthcheck "github.com/fastly/cli/pkg/commands/service/healthcheck" serviceimageoptimizerdefaults "github.com/fastly/cli/pkg/commands/service/imageoptimizerdefaults" + servicelogging "github.com/fastly/cli/pkg/commands/service/logging" + serviceloggingazureblob "github.com/fastly/cli/pkg/commands/service/logging/azureblob" + serviceloggingbigquery "github.com/fastly/cli/pkg/commands/service/logging/bigquery" + serviceloggingcloudfiles "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" + serviceloggingdatadog "github.com/fastly/cli/pkg/commands/service/logging/datadog" + serviceloggingdigitalocean "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" + serviceloggingelasticsearch "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" + serviceloggingftp "github.com/fastly/cli/pkg/commands/service/logging/ftp" + servicelogginggcs "github.com/fastly/cli/pkg/commands/service/logging/gcs" + servicelogginggooglepubsub "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" + servicelogginggrafanacloudlogs "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" + serviceloggingheroku "github.com/fastly/cli/pkg/commands/service/logging/heroku" + servicelogginghoneycomb "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" + servicelogginghttps "github.com/fastly/cli/pkg/commands/service/logging/https" + serviceloggingkafka "github.com/fastly/cli/pkg/commands/service/logging/kafka" + serviceloggingkinesis "github.com/fastly/cli/pkg/commands/service/logging/kinesis" + serviceloggingloggly "github.com/fastly/cli/pkg/commands/service/logging/loggly" + servicelogginglogshuttle "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" + serviceloggingnewrelic "github.com/fastly/cli/pkg/commands/service/logging/newrelic" + serviceloggingnewrelicotlp "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" + serviceloggingopenstack "github.com/fastly/cli/pkg/commands/service/logging/openstack" + serviceloggingpapertrail "github.com/fastly/cli/pkg/commands/service/logging/papertrail" + serviceloggings3 "github.com/fastly/cli/pkg/commands/service/logging/s3" + serviceloggingscalyr "github.com/fastly/cli/pkg/commands/service/logging/scalyr" + serviceloggingsftp "github.com/fastly/cli/pkg/commands/service/logging/sftp" + serviceloggingsplunk "github.com/fastly/cli/pkg/commands/service/logging/splunk" + serviceloggingsumologic "github.com/fastly/cli/pkg/commands/service/logging/sumologic" + serviceloggingsyslog "github.com/fastly/cli/pkg/commands/service/logging/syslog" servicepurge "github.com/fastly/cli/pkg/commands/service/purge" serviceratelimit "github.com/fastly/cli/pkg/commands/service/ratelimit" serviceresourcelink "github.com/fastly/cli/pkg/commands/service/resourcelink" @@ -221,169 +249,6 @@ func Define( // nolint:revive // function-length kvstoreentryDescribe := kvstoreentry.NewDescribeCommand(kvstoreentryCmdRoot.CmdClause, data) kvstoreentryList := kvstoreentry.NewListCommand(kvstoreentryCmdRoot.CmdClause, data) logtailCmdRoot := logtail.NewRootCommand(app, data) - loggingCmdRoot := logging.NewRootCommand(app, data) - loggingAzureblobCmdRoot := azureblob.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingAzureblobCreate := azureblob.NewCreateCommand(loggingAzureblobCmdRoot.CmdClause, data) - loggingAzureblobDelete := azureblob.NewDeleteCommand(loggingAzureblobCmdRoot.CmdClause, data) - loggingAzureblobDescribe := azureblob.NewDescribeCommand(loggingAzureblobCmdRoot.CmdClause, data) - loggingAzureblobList := azureblob.NewListCommand(loggingAzureblobCmdRoot.CmdClause, data) - loggingAzureblobUpdate := azureblob.NewUpdateCommand(loggingAzureblobCmdRoot.CmdClause, data) - loggingBigQueryCmdRoot := bigquery.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingBigQueryCreate := bigquery.NewCreateCommand(loggingBigQueryCmdRoot.CmdClause, data) - loggingBigQueryDelete := bigquery.NewDeleteCommand(loggingBigQueryCmdRoot.CmdClause, data) - loggingBigQueryDescribe := bigquery.NewDescribeCommand(loggingBigQueryCmdRoot.CmdClause, data) - loggingBigQueryList := bigquery.NewListCommand(loggingBigQueryCmdRoot.CmdClause, data) - loggingBigQueryUpdate := bigquery.NewUpdateCommand(loggingBigQueryCmdRoot.CmdClause, data) - loggingCloudfilesCmdRoot := cloudfiles.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingCloudfilesCreate := cloudfiles.NewCreateCommand(loggingCloudfilesCmdRoot.CmdClause, data) - loggingCloudfilesDelete := cloudfiles.NewDeleteCommand(loggingCloudfilesCmdRoot.CmdClause, data) - loggingCloudfilesDescribe := cloudfiles.NewDescribeCommand(loggingCloudfilesCmdRoot.CmdClause, data) - loggingCloudfilesList := cloudfiles.NewListCommand(loggingCloudfilesCmdRoot.CmdClause, data) - loggingCloudfilesUpdate := cloudfiles.NewUpdateCommand(loggingCloudfilesCmdRoot.CmdClause, data) - loggingDatadogCmdRoot := datadog.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingDatadogCreate := datadog.NewCreateCommand(loggingDatadogCmdRoot.CmdClause, data) - loggingDatadogDelete := datadog.NewDeleteCommand(loggingDatadogCmdRoot.CmdClause, data) - loggingDatadogDescribe := datadog.NewDescribeCommand(loggingDatadogCmdRoot.CmdClause, data) - loggingDatadogList := datadog.NewListCommand(loggingDatadogCmdRoot.CmdClause, data) - loggingDatadogUpdate := datadog.NewUpdateCommand(loggingDatadogCmdRoot.CmdClause, data) - loggingDigitaloceanCmdRoot := digitalocean.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingDigitaloceanCreate := digitalocean.NewCreateCommand(loggingDigitaloceanCmdRoot.CmdClause, data) - loggingDigitaloceanDelete := digitalocean.NewDeleteCommand(loggingDigitaloceanCmdRoot.CmdClause, data) - loggingDigitaloceanDescribe := digitalocean.NewDescribeCommand(loggingDigitaloceanCmdRoot.CmdClause, data) - loggingDigitaloceanList := digitalocean.NewListCommand(loggingDigitaloceanCmdRoot.CmdClause, data) - loggingDigitaloceanUpdate := digitalocean.NewUpdateCommand(loggingDigitaloceanCmdRoot.CmdClause, data) - loggingElasticsearchCmdRoot := elasticsearch.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingElasticsearchCreate := elasticsearch.NewCreateCommand(loggingElasticsearchCmdRoot.CmdClause, data) - loggingElasticsearchDelete := elasticsearch.NewDeleteCommand(loggingElasticsearchCmdRoot.CmdClause, data) - loggingElasticsearchDescribe := elasticsearch.NewDescribeCommand(loggingElasticsearchCmdRoot.CmdClause, data) - loggingElasticsearchList := elasticsearch.NewListCommand(loggingElasticsearchCmdRoot.CmdClause, data) - loggingElasticsearchUpdate := elasticsearch.NewUpdateCommand(loggingElasticsearchCmdRoot.CmdClause, data) - loggingFtpCmdRoot := ftp.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingFtpCreate := ftp.NewCreateCommand(loggingFtpCmdRoot.CmdClause, data) - loggingFtpDelete := ftp.NewDeleteCommand(loggingFtpCmdRoot.CmdClause, data) - loggingFtpDescribe := ftp.NewDescribeCommand(loggingFtpCmdRoot.CmdClause, data) - loggingFtpList := ftp.NewListCommand(loggingFtpCmdRoot.CmdClause, data) - loggingFtpUpdate := ftp.NewUpdateCommand(loggingFtpCmdRoot.CmdClause, data) - loggingGcsCmdRoot := gcs.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingGcsCreate := gcs.NewCreateCommand(loggingGcsCmdRoot.CmdClause, data) - loggingGcsDelete := gcs.NewDeleteCommand(loggingGcsCmdRoot.CmdClause, data) - loggingGcsDescribe := gcs.NewDescribeCommand(loggingGcsCmdRoot.CmdClause, data) - loggingGcsList := gcs.NewListCommand(loggingGcsCmdRoot.CmdClause, data) - loggingGcsUpdate := gcs.NewUpdateCommand(loggingGcsCmdRoot.CmdClause, data) - loggingGooglepubsubCmdRoot := googlepubsub.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingGooglepubsubCreate := googlepubsub.NewCreateCommand(loggingGooglepubsubCmdRoot.CmdClause, data) - loggingGooglepubsubDelete := googlepubsub.NewDeleteCommand(loggingGooglepubsubCmdRoot.CmdClause, data) - loggingGooglepubsubDescribe := googlepubsub.NewDescribeCommand(loggingGooglepubsubCmdRoot.CmdClause, data) - loggingGooglepubsubList := googlepubsub.NewListCommand(loggingGooglepubsubCmdRoot.CmdClause, data) - loggingGooglepubsubUpdate := googlepubsub.NewUpdateCommand(loggingGooglepubsubCmdRoot.CmdClause, data) - loggingGrafanacloudlogsCmdRoot := grafanacloudlogs.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingGrafanacloudlogsCreate := grafanacloudlogs.NewCreateCommand(loggingGrafanacloudlogsCmdRoot.CmdClause, data) - loggingGrafanacloudlogsDelete := grafanacloudlogs.NewDeleteCommand(loggingGrafanacloudlogsCmdRoot.CmdClause, data) - loggingGrafanacloudlogsDescribe := grafanacloudlogs.NewDescribeCommand(loggingGrafanacloudlogsCmdRoot.CmdClause, data) - loggingGrafanacloudlogsList := grafanacloudlogs.NewListCommand(loggingGrafanacloudlogsCmdRoot.CmdClause, data) - loggingGrafanacloudlogsUpdate := grafanacloudlogs.NewUpdateCommand(loggingGrafanacloudlogsCmdRoot.CmdClause, data) - loggingHerokuCmdRoot := heroku.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingHerokuCreate := heroku.NewCreateCommand(loggingHerokuCmdRoot.CmdClause, data) - loggingHerokuDelete := heroku.NewDeleteCommand(loggingHerokuCmdRoot.CmdClause, data) - loggingHerokuDescribe := heroku.NewDescribeCommand(loggingHerokuCmdRoot.CmdClause, data) - loggingHerokuList := heroku.NewListCommand(loggingHerokuCmdRoot.CmdClause, data) - loggingHerokuUpdate := heroku.NewUpdateCommand(loggingHerokuCmdRoot.CmdClause, data) - loggingHoneycombCmdRoot := honeycomb.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingHoneycombCreate := honeycomb.NewCreateCommand(loggingHoneycombCmdRoot.CmdClause, data) - loggingHoneycombDelete := honeycomb.NewDeleteCommand(loggingHoneycombCmdRoot.CmdClause, data) - loggingHoneycombDescribe := honeycomb.NewDescribeCommand(loggingHoneycombCmdRoot.CmdClause, data) - loggingHoneycombList := honeycomb.NewListCommand(loggingHoneycombCmdRoot.CmdClause, data) - loggingHoneycombUpdate := honeycomb.NewUpdateCommand(loggingHoneycombCmdRoot.CmdClause, data) - loggingHTTPSCmdRoot := https.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingHTTPSCreate := https.NewCreateCommand(loggingHTTPSCmdRoot.CmdClause, data) - loggingHTTPSDelete := https.NewDeleteCommand(loggingHTTPSCmdRoot.CmdClause, data) - loggingHTTPSDescribe := https.NewDescribeCommand(loggingHTTPSCmdRoot.CmdClause, data) - loggingHTTPSList := https.NewListCommand(loggingHTTPSCmdRoot.CmdClause, data) - loggingHTTPSUpdate := https.NewUpdateCommand(loggingHTTPSCmdRoot.CmdClause, data) - loggingKafkaCmdRoot := kafka.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingKafkaCreate := kafka.NewCreateCommand(loggingKafkaCmdRoot.CmdClause, data) - loggingKafkaDelete := kafka.NewDeleteCommand(loggingKafkaCmdRoot.CmdClause, data) - loggingKafkaDescribe := kafka.NewDescribeCommand(loggingKafkaCmdRoot.CmdClause, data) - loggingKafkaList := kafka.NewListCommand(loggingKafkaCmdRoot.CmdClause, data) - loggingKafkaUpdate := kafka.NewUpdateCommand(loggingKafkaCmdRoot.CmdClause, data) - loggingKinesisCmdRoot := kinesis.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingKinesisCreate := kinesis.NewCreateCommand(loggingKinesisCmdRoot.CmdClause, data) - loggingKinesisDelete := kinesis.NewDeleteCommand(loggingKinesisCmdRoot.CmdClause, data) - loggingKinesisDescribe := kinesis.NewDescribeCommand(loggingKinesisCmdRoot.CmdClause, data) - loggingKinesisList := kinesis.NewListCommand(loggingKinesisCmdRoot.CmdClause, data) - loggingKinesisUpdate := kinesis.NewUpdateCommand(loggingKinesisCmdRoot.CmdClause, data) - loggingLogglyCmdRoot := loggly.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingLogglyCreate := loggly.NewCreateCommand(loggingLogglyCmdRoot.CmdClause, data) - loggingLogglyDelete := loggly.NewDeleteCommand(loggingLogglyCmdRoot.CmdClause, data) - loggingLogglyDescribe := loggly.NewDescribeCommand(loggingLogglyCmdRoot.CmdClause, data) - loggingLogglyList := loggly.NewListCommand(loggingLogglyCmdRoot.CmdClause, data) - loggingLogglyUpdate := loggly.NewUpdateCommand(loggingLogglyCmdRoot.CmdClause, data) - loggingLogshuttleCmdRoot := logshuttle.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingLogshuttleCreate := logshuttle.NewCreateCommand(loggingLogshuttleCmdRoot.CmdClause, data) - loggingLogshuttleDelete := logshuttle.NewDeleteCommand(loggingLogshuttleCmdRoot.CmdClause, data) - loggingLogshuttleDescribe := logshuttle.NewDescribeCommand(loggingLogshuttleCmdRoot.CmdClause, data) - loggingLogshuttleList := logshuttle.NewListCommand(loggingLogshuttleCmdRoot.CmdClause, data) - loggingLogshuttleUpdate := logshuttle.NewUpdateCommand(loggingLogshuttleCmdRoot.CmdClause, data) - loggingNewRelicCmdRoot := newrelic.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingNewRelicCreate := newrelic.NewCreateCommand(loggingNewRelicCmdRoot.CmdClause, data) - loggingNewRelicDelete := newrelic.NewDeleteCommand(loggingNewRelicCmdRoot.CmdClause, data) - loggingNewRelicDescribe := newrelic.NewDescribeCommand(loggingNewRelicCmdRoot.CmdClause, data) - loggingNewRelicList := newrelic.NewListCommand(loggingNewRelicCmdRoot.CmdClause, data) - loggingNewRelicUpdate := newrelic.NewUpdateCommand(loggingNewRelicCmdRoot.CmdClause, data) - loggingNewRelicOTLPCmdRoot := newrelicotlp.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingNewRelicOTLPCreate := newrelicotlp.NewCreateCommand(loggingNewRelicOTLPCmdRoot.CmdClause, data) - loggingNewRelicOTLPDelete := newrelicotlp.NewDeleteCommand(loggingNewRelicOTLPCmdRoot.CmdClause, data) - loggingNewRelicOTLPDescribe := newrelicotlp.NewDescribeCommand(loggingNewRelicOTLPCmdRoot.CmdClause, data) - loggingNewRelicOTLPList := newrelicotlp.NewListCommand(loggingNewRelicOTLPCmdRoot.CmdClause, data) - loggingNewRelicOTLPUpdate := newrelicotlp.NewUpdateCommand(loggingNewRelicOTLPCmdRoot.CmdClause, data) - loggingOpenstackCmdRoot := openstack.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingOpenstackCreate := openstack.NewCreateCommand(loggingOpenstackCmdRoot.CmdClause, data) - loggingOpenstackDelete := openstack.NewDeleteCommand(loggingOpenstackCmdRoot.CmdClause, data) - loggingOpenstackDescribe := openstack.NewDescribeCommand(loggingOpenstackCmdRoot.CmdClause, data) - loggingOpenstackList := openstack.NewListCommand(loggingOpenstackCmdRoot.CmdClause, data) - loggingOpenstackUpdate := openstack.NewUpdateCommand(loggingOpenstackCmdRoot.CmdClause, data) - loggingPapertrailCmdRoot := papertrail.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingPapertrailCreate := papertrail.NewCreateCommand(loggingPapertrailCmdRoot.CmdClause, data) - loggingPapertrailDelete := papertrail.NewDeleteCommand(loggingPapertrailCmdRoot.CmdClause, data) - loggingPapertrailDescribe := papertrail.NewDescribeCommand(loggingPapertrailCmdRoot.CmdClause, data) - loggingPapertrailList := papertrail.NewListCommand(loggingPapertrailCmdRoot.CmdClause, data) - loggingPapertrailUpdate := papertrail.NewUpdateCommand(loggingPapertrailCmdRoot.CmdClause, data) - loggingS3CmdRoot := s3.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingS3Create := s3.NewCreateCommand(loggingS3CmdRoot.CmdClause, data) - loggingS3Delete := s3.NewDeleteCommand(loggingS3CmdRoot.CmdClause, data) - loggingS3Describe := s3.NewDescribeCommand(loggingS3CmdRoot.CmdClause, data) - loggingS3List := s3.NewListCommand(loggingS3CmdRoot.CmdClause, data) - loggingS3Update := s3.NewUpdateCommand(loggingS3CmdRoot.CmdClause, data) - loggingScalyrCmdRoot := scalyr.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingScalyrCreate := scalyr.NewCreateCommand(loggingScalyrCmdRoot.CmdClause, data) - loggingScalyrDelete := scalyr.NewDeleteCommand(loggingScalyrCmdRoot.CmdClause, data) - loggingScalyrDescribe := scalyr.NewDescribeCommand(loggingScalyrCmdRoot.CmdClause, data) - loggingScalyrList := scalyr.NewListCommand(loggingScalyrCmdRoot.CmdClause, data) - loggingScalyrUpdate := scalyr.NewUpdateCommand(loggingScalyrCmdRoot.CmdClause, data) - loggingSftpCmdRoot := sftp.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingSftpCreate := sftp.NewCreateCommand(loggingSftpCmdRoot.CmdClause, data) - loggingSftpDelete := sftp.NewDeleteCommand(loggingSftpCmdRoot.CmdClause, data) - loggingSftpDescribe := sftp.NewDescribeCommand(loggingSftpCmdRoot.CmdClause, data) - loggingSftpList := sftp.NewListCommand(loggingSftpCmdRoot.CmdClause, data) - loggingSftpUpdate := sftp.NewUpdateCommand(loggingSftpCmdRoot.CmdClause, data) - loggingSplunkCmdRoot := splunk.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingSplunkCreate := splunk.NewCreateCommand(loggingSplunkCmdRoot.CmdClause, data) - loggingSplunkDelete := splunk.NewDeleteCommand(loggingSplunkCmdRoot.CmdClause, data) - loggingSplunkDescribe := splunk.NewDescribeCommand(loggingSplunkCmdRoot.CmdClause, data) - loggingSplunkList := splunk.NewListCommand(loggingSplunkCmdRoot.CmdClause, data) - loggingSplunkUpdate := splunk.NewUpdateCommand(loggingSplunkCmdRoot.CmdClause, data) - loggingSumologicCmdRoot := sumologic.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingSumologicCreate := sumologic.NewCreateCommand(loggingSumologicCmdRoot.CmdClause, data) - loggingSumologicDelete := sumologic.NewDeleteCommand(loggingSumologicCmdRoot.CmdClause, data) - loggingSumologicDescribe := sumologic.NewDescribeCommand(loggingSumologicCmdRoot.CmdClause, data) - loggingSumologicList := sumologic.NewListCommand(loggingSumologicCmdRoot.CmdClause, data) - loggingSumologicUpdate := sumologic.NewUpdateCommand(loggingSumologicCmdRoot.CmdClause, data) - loggingSyslogCmdRoot := syslog.NewRootCommand(loggingCmdRoot.CmdClause, data) - loggingSyslogCreate := syslog.NewCreateCommand(loggingSyslogCmdRoot.CmdClause, data) - loggingSyslogDelete := syslog.NewDeleteCommand(loggingSyslogCmdRoot.CmdClause, data) - loggingSyslogDescribe := syslog.NewDescribeCommand(loggingSyslogCmdRoot.CmdClause, data) - loggingSyslogList := syslog.NewListCommand(loggingSyslogCmdRoot.CmdClause, data) - loggingSyslogUpdate := syslog.NewUpdateCommand(loggingSyslogCmdRoot.CmdClause, data) ngwafRoot := ngwaf.NewRootCommand(app, data) ngwafWorkspaceRoot := workspace.NewRootCommand(ngwafRoot.CmdClause, data) ngwafWorkspaceCreate := workspace.NewCreateCommand(ngwafWorkspaceRoot.CmdClause, data) @@ -626,6 +491,169 @@ func Define( // nolint:revive // function-length servicevclSnippetDescribe := servicevclsnippet.NewDescribeCommand(servicevclSnippetCmdRoot.CmdClause, data) servicevclSnippetList := servicevclsnippet.NewListCommand(servicevclSnippetCmdRoot.CmdClause, data) servicevclSnippetUpdate := servicevclsnippet.NewUpdateCommand(servicevclSnippetCmdRoot.CmdClause, data) + serviceloggingCmdRoot := servicelogging.NewRootCommand(serviceCmdRoot.CmdClause, data) + serviceloggingAzureblobCmdRoot := serviceloggingazureblob.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingAzureblobCreate := serviceloggingazureblob.NewCreateCommand(serviceloggingAzureblobCmdRoot.CmdClause, data) + serviceloggingAzureblobDelete := serviceloggingazureblob.NewDeleteCommand(serviceloggingAzureblobCmdRoot.CmdClause, data) + serviceloggingAzureblobDescribe := serviceloggingazureblob.NewDescribeCommand(serviceloggingAzureblobCmdRoot.CmdClause, data) + serviceloggingAzureblobList := serviceloggingazureblob.NewListCommand(serviceloggingAzureblobCmdRoot.CmdClause, data) + serviceloggingAzureblobUpdate := serviceloggingazureblob.NewUpdateCommand(serviceloggingAzureblobCmdRoot.CmdClause, data) + serviceloggingBigQueryCmdRoot := serviceloggingbigquery.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingBigQueryCreate := serviceloggingbigquery.NewCreateCommand(serviceloggingBigQueryCmdRoot.CmdClause, data) + serviceloggingBigQueryDelete := serviceloggingbigquery.NewDeleteCommand(serviceloggingBigQueryCmdRoot.CmdClause, data) + serviceloggingBigQueryDescribe := serviceloggingbigquery.NewDescribeCommand(serviceloggingBigQueryCmdRoot.CmdClause, data) + serviceloggingBigQueryList := serviceloggingbigquery.NewListCommand(serviceloggingBigQueryCmdRoot.CmdClause, data) + serviceloggingBigQueryUpdate := serviceloggingbigquery.NewUpdateCommand(serviceloggingBigQueryCmdRoot.CmdClause, data) + serviceloggingCloudfilesCmdRoot := serviceloggingcloudfiles.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingCloudfilesCreate := serviceloggingcloudfiles.NewCreateCommand(serviceloggingCloudfilesCmdRoot.CmdClause, data) + serviceloggingCloudfilesDelete := serviceloggingcloudfiles.NewDeleteCommand(serviceloggingCloudfilesCmdRoot.CmdClause, data) + serviceloggingCloudfilesDescribe := serviceloggingcloudfiles.NewDescribeCommand(serviceloggingCloudfilesCmdRoot.CmdClause, data) + serviceloggingCloudfilesList := serviceloggingcloudfiles.NewListCommand(serviceloggingCloudfilesCmdRoot.CmdClause, data) + serviceloggingCloudfilesUpdate := serviceloggingcloudfiles.NewUpdateCommand(serviceloggingCloudfilesCmdRoot.CmdClause, data) + serviceloggingDatadogCmdRoot := serviceloggingdatadog.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingDatadogCreate := serviceloggingdatadog.NewCreateCommand(serviceloggingDatadogCmdRoot.CmdClause, data) + serviceloggingDatadogDelete := serviceloggingdatadog.NewDeleteCommand(serviceloggingDatadogCmdRoot.CmdClause, data) + serviceloggingDatadogDescribe := serviceloggingdatadog.NewDescribeCommand(serviceloggingDatadogCmdRoot.CmdClause, data) + serviceloggingDatadogList := serviceloggingdatadog.NewListCommand(serviceloggingDatadogCmdRoot.CmdClause, data) + serviceloggingDatadogUpdate := serviceloggingdatadog.NewUpdateCommand(serviceloggingDatadogCmdRoot.CmdClause, data) + serviceloggingDigitaloceanCmdRoot := serviceloggingdigitalocean.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingDigitaloceanCreate := serviceloggingdigitalocean.NewCreateCommand(serviceloggingDigitaloceanCmdRoot.CmdClause, data) + serviceloggingDigitaloceanDelete := serviceloggingdigitalocean.NewDeleteCommand(serviceloggingDigitaloceanCmdRoot.CmdClause, data) + serviceloggingDigitaloceanDescribe := serviceloggingdigitalocean.NewDescribeCommand(serviceloggingDigitaloceanCmdRoot.CmdClause, data) + serviceloggingDigitaloceanList := serviceloggingdigitalocean.NewListCommand(serviceloggingDigitaloceanCmdRoot.CmdClause, data) + serviceloggingDigitaloceanUpdate := serviceloggingdigitalocean.NewUpdateCommand(serviceloggingDigitaloceanCmdRoot.CmdClause, data) + serviceloggingElasticsearchCmdRoot := serviceloggingelasticsearch.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingElasticsearchCreate := serviceloggingelasticsearch.NewCreateCommand(serviceloggingElasticsearchCmdRoot.CmdClause, data) + serviceloggingElasticsearchDelete := serviceloggingelasticsearch.NewDeleteCommand(serviceloggingElasticsearchCmdRoot.CmdClause, data) + serviceloggingElasticsearchDescribe := serviceloggingelasticsearch.NewDescribeCommand(serviceloggingElasticsearchCmdRoot.CmdClause, data) + serviceloggingElasticsearchList := serviceloggingelasticsearch.NewListCommand(serviceloggingElasticsearchCmdRoot.CmdClause, data) + serviceloggingElasticsearchUpdate := serviceloggingelasticsearch.NewUpdateCommand(serviceloggingElasticsearchCmdRoot.CmdClause, data) + serviceloggingFtpCmdRoot := serviceloggingftp.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingFtpCreate := serviceloggingftp.NewCreateCommand(serviceloggingFtpCmdRoot.CmdClause, data) + serviceloggingFtpDelete := serviceloggingftp.NewDeleteCommand(serviceloggingFtpCmdRoot.CmdClause, data) + serviceloggingFtpDescribe := serviceloggingftp.NewDescribeCommand(serviceloggingFtpCmdRoot.CmdClause, data) + serviceloggingFtpList := serviceloggingftp.NewListCommand(serviceloggingFtpCmdRoot.CmdClause, data) + serviceloggingFtpUpdate := serviceloggingftp.NewUpdateCommand(serviceloggingFtpCmdRoot.CmdClause, data) + serviceloggingGcsCmdRoot := servicelogginggcs.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingGcsCreate := servicelogginggcs.NewCreateCommand(serviceloggingGcsCmdRoot.CmdClause, data) + serviceloggingGcsDelete := servicelogginggcs.NewDeleteCommand(serviceloggingGcsCmdRoot.CmdClause, data) + serviceloggingGcsDescribe := servicelogginggcs.NewDescribeCommand(serviceloggingGcsCmdRoot.CmdClause, data) + serviceloggingGcsList := servicelogginggcs.NewListCommand(serviceloggingGcsCmdRoot.CmdClause, data) + serviceloggingGcsUpdate := servicelogginggcs.NewUpdateCommand(serviceloggingGcsCmdRoot.CmdClause, data) + serviceloggingGooglepubsubCmdRoot := servicelogginggooglepubsub.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingGooglepubsubCreate := servicelogginggooglepubsub.NewCreateCommand(serviceloggingGooglepubsubCmdRoot.CmdClause, data) + serviceloggingGooglepubsubDelete := servicelogginggooglepubsub.NewDeleteCommand(serviceloggingGooglepubsubCmdRoot.CmdClause, data) + serviceloggingGooglepubsubDescribe := servicelogginggooglepubsub.NewDescribeCommand(serviceloggingGooglepubsubCmdRoot.CmdClause, data) + serviceloggingGooglepubsubList := servicelogginggooglepubsub.NewListCommand(serviceloggingGooglepubsubCmdRoot.CmdClause, data) + serviceloggingGooglepubsubUpdate := servicelogginggooglepubsub.NewUpdateCommand(serviceloggingGooglepubsubCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsCmdRoot := servicelogginggrafanacloudlogs.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsCreate := servicelogginggrafanacloudlogs.NewCreateCommand(serviceloggingGrafanacloudlogsCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsDelete := servicelogginggrafanacloudlogs.NewDeleteCommand(serviceloggingGrafanacloudlogsCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsDescribe := servicelogginggrafanacloudlogs.NewDescribeCommand(serviceloggingGrafanacloudlogsCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsList := servicelogginggrafanacloudlogs.NewListCommand(serviceloggingGrafanacloudlogsCmdRoot.CmdClause, data) + serviceloggingGrafanacloudlogsUpdate := servicelogginggrafanacloudlogs.NewUpdateCommand(serviceloggingGrafanacloudlogsCmdRoot.CmdClause, data) + serviceloggingHerokuCmdRoot := serviceloggingheroku.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingHerokuCreate := serviceloggingheroku.NewCreateCommand(serviceloggingHerokuCmdRoot.CmdClause, data) + serviceloggingHerokuDelete := serviceloggingheroku.NewDeleteCommand(serviceloggingHerokuCmdRoot.CmdClause, data) + serviceloggingHerokuDescribe := serviceloggingheroku.NewDescribeCommand(serviceloggingHerokuCmdRoot.CmdClause, data) + serviceloggingHerokuList := serviceloggingheroku.NewListCommand(serviceloggingHerokuCmdRoot.CmdClause, data) + serviceloggingHerokuUpdate := serviceloggingheroku.NewUpdateCommand(serviceloggingHerokuCmdRoot.CmdClause, data) + serviceloggingHoneycombCmdRoot := servicelogginghoneycomb.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingHoneycombCreate := servicelogginghoneycomb.NewCreateCommand(serviceloggingHoneycombCmdRoot.CmdClause, data) + serviceloggingHoneycombDelete := servicelogginghoneycomb.NewDeleteCommand(serviceloggingHoneycombCmdRoot.CmdClause, data) + serviceloggingHoneycombDescribe := servicelogginghoneycomb.NewDescribeCommand(serviceloggingHoneycombCmdRoot.CmdClause, data) + serviceloggingHoneycombList := servicelogginghoneycomb.NewListCommand(serviceloggingHoneycombCmdRoot.CmdClause, data) + serviceloggingHoneycombUpdate := servicelogginghoneycomb.NewUpdateCommand(serviceloggingHoneycombCmdRoot.CmdClause, data) + serviceloggingHTTPSCmdRoot := servicelogginghttps.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingHTTPSCreate := servicelogginghttps.NewCreateCommand(serviceloggingHTTPSCmdRoot.CmdClause, data) + serviceloggingHTTPSDelete := servicelogginghttps.NewDeleteCommand(serviceloggingHTTPSCmdRoot.CmdClause, data) + serviceloggingHTTPSDescribe := servicelogginghttps.NewDescribeCommand(serviceloggingHTTPSCmdRoot.CmdClause, data) + serviceloggingHTTPSList := servicelogginghttps.NewListCommand(serviceloggingHTTPSCmdRoot.CmdClause, data) + serviceloggingHTTPSUpdate := servicelogginghttps.NewUpdateCommand(serviceloggingHTTPSCmdRoot.CmdClause, data) + serviceloggingKafkaCmdRoot := serviceloggingkafka.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingKafkaCreate := serviceloggingkafka.NewCreateCommand(serviceloggingKafkaCmdRoot.CmdClause, data) + serviceloggingKafkaDelete := serviceloggingkafka.NewDeleteCommand(serviceloggingKafkaCmdRoot.CmdClause, data) + serviceloggingKafkaDescribe := serviceloggingkafka.NewDescribeCommand(serviceloggingKafkaCmdRoot.CmdClause, data) + serviceloggingKafkaList := serviceloggingkafka.NewListCommand(serviceloggingKafkaCmdRoot.CmdClause, data) + serviceloggingKafkaUpdate := serviceloggingkafka.NewUpdateCommand(serviceloggingKafkaCmdRoot.CmdClause, data) + serviceloggingKinesisCmdRoot := serviceloggingkinesis.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingKinesisCreate := serviceloggingkinesis.NewCreateCommand(serviceloggingKinesisCmdRoot.CmdClause, data) + serviceloggingKinesisDelete := serviceloggingkinesis.NewDeleteCommand(serviceloggingKinesisCmdRoot.CmdClause, data) + serviceloggingKinesisDescribe := serviceloggingkinesis.NewDescribeCommand(serviceloggingKinesisCmdRoot.CmdClause, data) + serviceloggingKinesisList := serviceloggingkinesis.NewListCommand(serviceloggingKinesisCmdRoot.CmdClause, data) + serviceloggingKinesisUpdate := serviceloggingkinesis.NewUpdateCommand(serviceloggingKinesisCmdRoot.CmdClause, data) + serviceloggingLogglyCmdRoot := serviceloggingloggly.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingLogglyCreate := serviceloggingloggly.NewCreateCommand(serviceloggingLogglyCmdRoot.CmdClause, data) + serviceloggingLogglyDelete := serviceloggingloggly.NewDeleteCommand(serviceloggingLogglyCmdRoot.CmdClause, data) + serviceloggingLogglyDescribe := serviceloggingloggly.NewDescribeCommand(serviceloggingLogglyCmdRoot.CmdClause, data) + serviceloggingLogglyList := serviceloggingloggly.NewListCommand(serviceloggingLogglyCmdRoot.CmdClause, data) + serviceloggingLogglyUpdate := serviceloggingloggly.NewUpdateCommand(serviceloggingLogglyCmdRoot.CmdClause, data) + serviceloggingLogshuttleCmdRoot := servicelogginglogshuttle.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingLogshuttleCreate := servicelogginglogshuttle.NewCreateCommand(serviceloggingLogshuttleCmdRoot.CmdClause, data) + serviceloggingLogshuttleDelete := servicelogginglogshuttle.NewDeleteCommand(serviceloggingLogshuttleCmdRoot.CmdClause, data) + serviceloggingLogshuttleDescribe := servicelogginglogshuttle.NewDescribeCommand(serviceloggingLogshuttleCmdRoot.CmdClause, data) + serviceloggingLogshuttleList := servicelogginglogshuttle.NewListCommand(serviceloggingLogshuttleCmdRoot.CmdClause, data) + serviceloggingLogshuttleUpdate := servicelogginglogshuttle.NewUpdateCommand(serviceloggingLogshuttleCmdRoot.CmdClause, data) + serviceloggingNewRelicCmdRoot := serviceloggingnewrelic.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingNewRelicCreate := serviceloggingnewrelic.NewCreateCommand(serviceloggingNewRelicCmdRoot.CmdClause, data) + serviceloggingNewRelicDelete := serviceloggingnewrelic.NewDeleteCommand(serviceloggingNewRelicCmdRoot.CmdClause, data) + serviceloggingNewRelicDescribe := serviceloggingnewrelic.NewDescribeCommand(serviceloggingNewRelicCmdRoot.CmdClause, data) + serviceloggingNewRelicList := serviceloggingnewrelic.NewListCommand(serviceloggingNewRelicCmdRoot.CmdClause, data) + serviceloggingNewRelicUpdate := serviceloggingnewrelic.NewUpdateCommand(serviceloggingNewRelicCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPCmdRoot := serviceloggingnewrelicotlp.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPCreate := serviceloggingnewrelicotlp.NewCreateCommand(serviceloggingNewRelicOTLPCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPDelete := serviceloggingnewrelicotlp.NewDeleteCommand(serviceloggingNewRelicOTLPCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPDescribe := serviceloggingnewrelicotlp.NewDescribeCommand(serviceloggingNewRelicOTLPCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPList := serviceloggingnewrelicotlp.NewListCommand(serviceloggingNewRelicOTLPCmdRoot.CmdClause, data) + serviceloggingNewRelicOTLPUpdate := serviceloggingnewrelicotlp.NewUpdateCommand(serviceloggingNewRelicOTLPCmdRoot.CmdClause, data) + serviceloggingOpenstackCmdRoot := serviceloggingopenstack.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingOpenstackCreate := serviceloggingopenstack.NewCreateCommand(serviceloggingOpenstackCmdRoot.CmdClause, data) + serviceloggingOpenstackDelete := serviceloggingopenstack.NewDeleteCommand(serviceloggingOpenstackCmdRoot.CmdClause, data) + serviceloggingOpenstackDescribe := serviceloggingopenstack.NewDescribeCommand(serviceloggingOpenstackCmdRoot.CmdClause, data) + serviceloggingOpenstackList := serviceloggingopenstack.NewListCommand(serviceloggingOpenstackCmdRoot.CmdClause, data) + serviceloggingOpenstackUpdate := serviceloggingopenstack.NewUpdateCommand(serviceloggingOpenstackCmdRoot.CmdClause, data) + serviceloggingPapertrailCmdRoot := serviceloggingpapertrail.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingPapertrailCreate := serviceloggingpapertrail.NewCreateCommand(serviceloggingPapertrailCmdRoot.CmdClause, data) + serviceloggingPapertrailDelete := serviceloggingpapertrail.NewDeleteCommand(serviceloggingPapertrailCmdRoot.CmdClause, data) + serviceloggingPapertrailDescribe := serviceloggingpapertrail.NewDescribeCommand(serviceloggingPapertrailCmdRoot.CmdClause, data) + serviceloggingPapertrailList := serviceloggingpapertrail.NewListCommand(serviceloggingPapertrailCmdRoot.CmdClause, data) + serviceloggingPapertrailUpdate := serviceloggingpapertrail.NewUpdateCommand(serviceloggingPapertrailCmdRoot.CmdClause, data) + serviceloggingS3CmdRoot := serviceloggings3.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingS3Create := serviceloggings3.NewCreateCommand(serviceloggingS3CmdRoot.CmdClause, data) + serviceloggingS3Delete := serviceloggings3.NewDeleteCommand(serviceloggingS3CmdRoot.CmdClause, data) + serviceloggingS3Describe := serviceloggings3.NewDescribeCommand(serviceloggingS3CmdRoot.CmdClause, data) + serviceloggingS3List := serviceloggings3.NewListCommand(serviceloggingS3CmdRoot.CmdClause, data) + serviceloggingS3Update := serviceloggings3.NewUpdateCommand(serviceloggingS3CmdRoot.CmdClause, data) + serviceloggingScalyrCmdRoot := serviceloggingscalyr.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingScalyrCreate := serviceloggingscalyr.NewCreateCommand(serviceloggingScalyrCmdRoot.CmdClause, data) + serviceloggingScalyrDelete := serviceloggingscalyr.NewDeleteCommand(serviceloggingScalyrCmdRoot.CmdClause, data) + serviceloggingScalyrDescribe := serviceloggingscalyr.NewDescribeCommand(serviceloggingScalyrCmdRoot.CmdClause, data) + serviceloggingScalyrList := serviceloggingscalyr.NewListCommand(serviceloggingScalyrCmdRoot.CmdClause, data) + serviceloggingScalyrUpdate := serviceloggingscalyr.NewUpdateCommand(serviceloggingScalyrCmdRoot.CmdClause, data) + serviceloggingSftpCmdRoot := serviceloggingsftp.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingSftpCreate := serviceloggingsftp.NewCreateCommand(serviceloggingSftpCmdRoot.CmdClause, data) + serviceloggingSftpDelete := serviceloggingsftp.NewDeleteCommand(serviceloggingSftpCmdRoot.CmdClause, data) + serviceloggingSftpDescribe := serviceloggingsftp.NewDescribeCommand(serviceloggingSftpCmdRoot.CmdClause, data) + serviceloggingSftpList := serviceloggingsftp.NewListCommand(serviceloggingSftpCmdRoot.CmdClause, data) + serviceloggingSftpUpdate := serviceloggingsftp.NewUpdateCommand(serviceloggingSftpCmdRoot.CmdClause, data) + serviceloggingSplunkCmdRoot := serviceloggingsplunk.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingSplunkCreate := serviceloggingsplunk.NewCreateCommand(serviceloggingSplunkCmdRoot.CmdClause, data) + serviceloggingSplunkDelete := serviceloggingsplunk.NewDeleteCommand(serviceloggingSplunkCmdRoot.CmdClause, data) + serviceloggingSplunkDescribe := serviceloggingsplunk.NewDescribeCommand(serviceloggingSplunkCmdRoot.CmdClause, data) + serviceloggingSplunkList := serviceloggingsplunk.NewListCommand(serviceloggingSplunkCmdRoot.CmdClause, data) + serviceloggingSplunkUpdate := serviceloggingsplunk.NewUpdateCommand(serviceloggingSplunkCmdRoot.CmdClause, data) + serviceloggingSumologicCmdRoot := serviceloggingsumologic.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingSumologicCreate := serviceloggingsumologic.NewCreateCommand(serviceloggingSumologicCmdRoot.CmdClause, data) + serviceloggingSumologicDelete := serviceloggingsumologic.NewDeleteCommand(serviceloggingSumologicCmdRoot.CmdClause, data) + serviceloggingSumologicDescribe := serviceloggingsumologic.NewDescribeCommand(serviceloggingSumologicCmdRoot.CmdClause, data) + serviceloggingSumologicList := serviceloggingsumologic.NewListCommand(serviceloggingSumologicCmdRoot.CmdClause, data) + serviceloggingSumologicUpdate := serviceloggingsumologic.NewUpdateCommand(serviceloggingSumologicCmdRoot.CmdClause, data) + serviceloggingSyslogCmdRoot := serviceloggingsyslog.NewRootCommand(serviceloggingCmdRoot.CmdClause, data) + serviceloggingSyslogCreate := serviceloggingsyslog.NewCreateCommand(serviceloggingSyslogCmdRoot.CmdClause, data) + serviceloggingSyslogDelete := serviceloggingsyslog.NewDeleteCommand(serviceloggingSyslogCmdRoot.CmdClause, data) + serviceloggingSyslogDescribe := serviceloggingsyslog.NewDescribeCommand(serviceloggingSyslogCmdRoot.CmdClause, data) + serviceloggingSyslogList := serviceloggingsyslog.NewListCommand(serviceloggingSyslogCmdRoot.CmdClause, data) + serviceloggingSyslogUpdate := serviceloggingsyslog.NewUpdateCommand(serviceloggingSyslogCmdRoot.CmdClause, data) serviceVersionCmdRoot := serviceversion.NewRootCommand(serviceCmdRoot.CmdClause, data) serviceVersionActivate := serviceversion.NewActivateCommand(serviceVersionCmdRoot.CmdClause, data) serviceVersionClone := serviceversion.NewCloneCommand(serviceVersionCmdRoot.CmdClause, data) @@ -824,6 +852,169 @@ func Define( // nolint:revive // function-length aliasServiceVersionStage := aliasserviceversion.NewStageCommand(aliasServiceVersionRoot.CmdClause, data) aliasServiceVersionUnstage := aliasserviceversion.NewUnstageCommand(aliasServiceVersionRoot.CmdClause, data) aliasServiceVersionUpdate := aliasserviceversion.NewUpdateCommand(aliasServiceVersionRoot.CmdClause, data) + aliasLoggingRoot := aliaslogging.NewRootCommand(app, data) + aliasAzureblobRoot := aliasazureblob.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasAzureblobCreate := aliasazureblob.NewCreateCommand(aliasAzureblobRoot.CmdClause, data) + aliasAzureblobDelete := aliasazureblob.NewDeleteCommand(aliasAzureblobRoot.CmdClause, data) + aliasAzureblobDescribe := aliasazureblob.NewDescribeCommand(aliasAzureblobRoot.CmdClause, data) + aliasAzureblobList := aliasazureblob.NewListCommand(aliasAzureblobRoot.CmdClause, data) + aliasAzureblobUpdate := aliasazureblob.NewUpdateCommand(aliasAzureblobRoot.CmdClause, data) + aliasBigqueryRoot := aliasbigquery.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasBigqueryCreate := aliasbigquery.NewCreateCommand(aliasBigqueryRoot.CmdClause, data) + aliasBigqueryDelete := aliasbigquery.NewDeleteCommand(aliasBigqueryRoot.CmdClause, data) + aliasBigqueryDescribe := aliasbigquery.NewDescribeCommand(aliasBigqueryRoot.CmdClause, data) + aliasBigqueryList := aliasbigquery.NewListCommand(aliasBigqueryRoot.CmdClause, data) + aliasBigqueryUpdate := aliasbigquery.NewUpdateCommand(aliasBigqueryRoot.CmdClause, data) + aliasCloudfilesRoot := aliascloudfiles.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasCloudfilesCreate := aliascloudfiles.NewCreateCommand(aliasCloudfilesRoot.CmdClause, data) + aliasCloudfilesDelete := aliascloudfiles.NewDeleteCommand(aliasCloudfilesRoot.CmdClause, data) + aliasCloudfilesDescribe := aliascloudfiles.NewDescribeCommand(aliasCloudfilesRoot.CmdClause, data) + aliasCloudfilesList := aliascloudfiles.NewListCommand(aliasCloudfilesRoot.CmdClause, data) + aliasCloudfilesUpdate := aliascloudfiles.NewUpdateCommand(aliasCloudfilesRoot.CmdClause, data) + aliasDatadogRoot := aliasdatadog.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasDatadogCreate := aliasdatadog.NewCreateCommand(aliasDatadogRoot.CmdClause, data) + aliasDatadogDelete := aliasdatadog.NewDeleteCommand(aliasDatadogRoot.CmdClause, data) + aliasDatadogDescribe := aliasdatadog.NewDescribeCommand(aliasDatadogRoot.CmdClause, data) + aliasDatadogList := aliasdatadog.NewListCommand(aliasDatadogRoot.CmdClause, data) + aliasDatadogUpdate := aliasdatadog.NewUpdateCommand(aliasDatadogRoot.CmdClause, data) + aliasDigitaloceanRoot := aliasdigitalocean.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasDigitaloceanCreate := aliasdigitalocean.NewCreateCommand(aliasDigitaloceanRoot.CmdClause, data) + aliasDigitaloceanDelete := aliasdigitalocean.NewDeleteCommand(aliasDigitaloceanRoot.CmdClause, data) + aliasDigitaloceanDescribe := aliasdigitalocean.NewDescribeCommand(aliasDigitaloceanRoot.CmdClause, data) + aliasDigitaloceanList := aliasdigitalocean.NewListCommand(aliasDigitaloceanRoot.CmdClause, data) + aliasDigitaloceanUpdate := aliasdigitalocean.NewUpdateCommand(aliasDigitaloceanRoot.CmdClause, data) + aliasElasticsearchRoot := aliaselasticsearch.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasElasticsearchCreate := aliaselasticsearch.NewCreateCommand(aliasElasticsearchRoot.CmdClause, data) + aliasElasticsearchDelete := aliaselasticsearch.NewDeleteCommand(aliasElasticsearchRoot.CmdClause, data) + aliasElasticsearchDescribe := aliaselasticsearch.NewDescribeCommand(aliasElasticsearchRoot.CmdClause, data) + aliasElasticsearchList := aliaselasticsearch.NewListCommand(aliasElasticsearchRoot.CmdClause, data) + aliasElasticsearchUpdate := aliaselasticsearch.NewUpdateCommand(aliasElasticsearchRoot.CmdClause, data) + aliasFtpRoot := aliasftp.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasFtpCreate := aliasftp.NewCreateCommand(aliasFtpRoot.CmdClause, data) + aliasFtpDelete := aliasftp.NewDeleteCommand(aliasFtpRoot.CmdClause, data) + aliasFtpDescribe := aliasftp.NewDescribeCommand(aliasFtpRoot.CmdClause, data) + aliasFtpList := aliasftp.NewListCommand(aliasFtpRoot.CmdClause, data) + aliasFtpUpdate := aliasftp.NewUpdateCommand(aliasFtpRoot.CmdClause, data) + aliasGcsRoot := aliasgcs.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasGcsCreate := aliasgcs.NewCreateCommand(aliasGcsRoot.CmdClause, data) + aliasGcsDelete := aliasgcs.NewDeleteCommand(aliasGcsRoot.CmdClause, data) + aliasGcsDescribe := aliasgcs.NewDescribeCommand(aliasGcsRoot.CmdClause, data) + aliasGcsList := aliasgcs.NewListCommand(aliasGcsRoot.CmdClause, data) + aliasGcsUpdate := aliasgcs.NewUpdateCommand(aliasGcsRoot.CmdClause, data) + aliasGooglepubsubRoot := aliasgooglepubsub.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasGooglepubsubCreate := aliasgooglepubsub.NewCreateCommand(aliasGooglepubsubRoot.CmdClause, data) + aliasGooglepubsubDelete := aliasgooglepubsub.NewDeleteCommand(aliasGooglepubsubRoot.CmdClause, data) + aliasGooglepubsubDescribe := aliasgooglepubsub.NewDescribeCommand(aliasGooglepubsubRoot.CmdClause, data) + aliasGooglepubsubList := aliasgooglepubsub.NewListCommand(aliasGooglepubsubRoot.CmdClause, data) + aliasGooglepubsubUpdate := aliasgooglepubsub.NewUpdateCommand(aliasGooglepubsubRoot.CmdClause, data) + aliasGrafanacloudlogsRoot := aliasgrafanacloudlogs.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasGrafanacloudlogsCreate := aliasgrafanacloudlogs.NewCreateCommand(aliasGrafanacloudlogsRoot.CmdClause, data) + aliasGrafanacloudlogsDelete := aliasgrafanacloudlogs.NewDeleteCommand(aliasGrafanacloudlogsRoot.CmdClause, data) + aliasGrafanacloudlogsDescribe := aliasgrafanacloudlogs.NewDescribeCommand(aliasGrafanacloudlogsRoot.CmdClause, data) + aliasGrafanacloudlogsList := aliasgrafanacloudlogs.NewListCommand(aliasGrafanacloudlogsRoot.CmdClause, data) + aliasGrafanacloudlogsUpdate := aliasgrafanacloudlogs.NewUpdateCommand(aliasGrafanacloudlogsRoot.CmdClause, data) + aliasHerokuRoot := aliasheroku.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasHerokuCreate := aliasheroku.NewCreateCommand(aliasHerokuRoot.CmdClause, data) + aliasHerokuDelete := aliasheroku.NewDeleteCommand(aliasHerokuRoot.CmdClause, data) + aliasHerokuDescribe := aliasheroku.NewDescribeCommand(aliasHerokuRoot.CmdClause, data) + aliasHerokuList := aliasheroku.NewListCommand(aliasHerokuRoot.CmdClause, data) + aliasHerokuUpdate := aliasheroku.NewUpdateCommand(aliasHerokuRoot.CmdClause, data) + aliasHoneycombRoot := aliashoneycomb.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasHoneycombCreate := aliashoneycomb.NewCreateCommand(aliasHoneycombRoot.CmdClause, data) + aliasHoneycombDelete := aliashoneycomb.NewDeleteCommand(aliasHoneycombRoot.CmdClause, data) + aliasHoneycombDescribe := aliashoneycomb.NewDescribeCommand(aliasHoneycombRoot.CmdClause, data) + aliasHoneycombList := aliashoneycomb.NewListCommand(aliasHoneycombRoot.CmdClause, data) + aliasHoneycombUpdate := aliashoneycomb.NewUpdateCommand(aliasHoneycombRoot.CmdClause, data) + aliasHTTPSRoot := aliashttps.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasHTTPSCreate := aliashttps.NewCreateCommand(aliasHTTPSRoot.CmdClause, data) + aliasHTTPSDelete := aliashttps.NewDeleteCommand(aliasHTTPSRoot.CmdClause, data) + aliasHTTPSDescribe := aliashttps.NewDescribeCommand(aliasHTTPSRoot.CmdClause, data) + aliasHTTPSList := aliashttps.NewListCommand(aliasHTTPSRoot.CmdClause, data) + aliasHTTPSUpdate := aliashttps.NewUpdateCommand(aliasHTTPSRoot.CmdClause, data) + aliasKafkaRoot := aliaskafka.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasKafkaCreate := aliaskafka.NewCreateCommand(aliasKafkaRoot.CmdClause, data) + aliasKafkaDelete := aliaskafka.NewDeleteCommand(aliasKafkaRoot.CmdClause, data) + aliasKafkaDescribe := aliaskafka.NewDescribeCommand(aliasKafkaRoot.CmdClause, data) + aliasKafkaList := aliaskafka.NewListCommand(aliasKafkaRoot.CmdClause, data) + aliasKafkaUpdate := aliaskafka.NewUpdateCommand(aliasKafkaRoot.CmdClause, data) + aliasKinesisRoot := aliaskinesis.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasKinesisCreate := aliaskinesis.NewCreateCommand(aliasKinesisRoot.CmdClause, data) + aliasKinesisDelete := aliaskinesis.NewDeleteCommand(aliasKinesisRoot.CmdClause, data) + aliasKinesisDescribe := aliaskinesis.NewDescribeCommand(aliasKinesisRoot.CmdClause, data) + aliasKinesisList := aliaskinesis.NewListCommand(aliasKinesisRoot.CmdClause, data) + aliasKinesisUpdate := aliaskinesis.NewUpdateCommand(aliasKinesisRoot.CmdClause, data) + aliasLogglyRoot := aliasloggly.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasLogglyCreate := aliasloggly.NewCreateCommand(aliasLogglyRoot.CmdClause, data) + aliasLogglyDelete := aliasloggly.NewDeleteCommand(aliasLogglyRoot.CmdClause, data) + aliasLogglyDescribe := aliasloggly.NewDescribeCommand(aliasLogglyRoot.CmdClause, data) + aliasLogglyList := aliasloggly.NewListCommand(aliasLogglyRoot.CmdClause, data) + aliasLogglyUpdate := aliasloggly.NewUpdateCommand(aliasLogglyRoot.CmdClause, data) + aliasLogshuttleRoot := aliaslogshuttle.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasLogshuttleCreate := aliaslogshuttle.NewCreateCommand(aliasLogshuttleRoot.CmdClause, data) + aliasLogshuttleDelete := aliaslogshuttle.NewDeleteCommand(aliasLogshuttleRoot.CmdClause, data) + aliasLogshuttleDescribe := aliaslogshuttle.NewDescribeCommand(aliasLogshuttleRoot.CmdClause, data) + aliasLogshuttleList := aliaslogshuttle.NewListCommand(aliasLogshuttleRoot.CmdClause, data) + aliasLogshuttleUpdate := aliaslogshuttle.NewUpdateCommand(aliasLogshuttleRoot.CmdClause, data) + aliasNewrelicRoot := aliasnewrelic.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasNewrelicCreate := aliasnewrelic.NewCreateCommand(aliasNewrelicRoot.CmdClause, data) + aliasNewrelicDelete := aliasnewrelic.NewDeleteCommand(aliasNewrelicRoot.CmdClause, data) + aliasNewrelicDescribe := aliasnewrelic.NewDescribeCommand(aliasNewrelicRoot.CmdClause, data) + aliasNewrelicList := aliasnewrelic.NewListCommand(aliasNewrelicRoot.CmdClause, data) + aliasNewrelicUpdate := aliasnewrelic.NewUpdateCommand(aliasNewrelicRoot.CmdClause, data) + aliasNewrelicotlpRoot := aliasnewrelicotlp.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasNewrelicotlpCreate := aliasnewrelicotlp.NewCreateCommand(aliasNewrelicotlpRoot.CmdClause, data) + aliasNewrelicotlpDelete := aliasnewrelicotlp.NewDeleteCommand(aliasNewrelicotlpRoot.CmdClause, data) + aliasNewrelicotlpDescribe := aliasnewrelicotlp.NewDescribeCommand(aliasNewrelicotlpRoot.CmdClause, data) + aliasNewrelicotlpList := aliasnewrelicotlp.NewListCommand(aliasNewrelicotlpRoot.CmdClause, data) + aliasNewrelicotlpUpdate := aliasnewrelicotlp.NewUpdateCommand(aliasNewrelicotlpRoot.CmdClause, data) + aliasOpenstackRoot := aliasopenstack.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasOpenstackCreate := aliasopenstack.NewCreateCommand(aliasOpenstackRoot.CmdClause, data) + aliasOpenstackDelete := aliasopenstack.NewDeleteCommand(aliasOpenstackRoot.CmdClause, data) + aliasOpenstackDescribe := aliasopenstack.NewDescribeCommand(aliasOpenstackRoot.CmdClause, data) + aliasOpenstackList := aliasopenstack.NewListCommand(aliasOpenstackRoot.CmdClause, data) + aliasOpenstackUpdate := aliasopenstack.NewUpdateCommand(aliasOpenstackRoot.CmdClause, data) + aliasPapertrailRoot := aliaspapertrail.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasPapertrailCreate := aliaspapertrail.NewCreateCommand(aliasPapertrailRoot.CmdClause, data) + aliasPapertrailDelete := aliaspapertrail.NewDeleteCommand(aliasPapertrailRoot.CmdClause, data) + aliasPapertrailDescribe := aliaspapertrail.NewDescribeCommand(aliasPapertrailRoot.CmdClause, data) + aliasPapertrailList := aliaspapertrail.NewListCommand(aliasPapertrailRoot.CmdClause, data) + aliasPapertrailUpdate := aliaspapertrail.NewUpdateCommand(aliasPapertrailRoot.CmdClause, data) + aliasS3Root := aliass3.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasS3Create := aliass3.NewCreateCommand(aliasS3Root.CmdClause, data) + aliasS3Delete := aliass3.NewDeleteCommand(aliasS3Root.CmdClause, data) + aliasS3Describe := aliass3.NewDescribeCommand(aliasS3Root.CmdClause, data) + aliasS3List := aliass3.NewListCommand(aliasS3Root.CmdClause, data) + aliasS3Update := aliass3.NewUpdateCommand(aliasS3Root.CmdClause, data) + aliasScalyrRoot := aliasscalyr.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasScalyrCreate := aliasscalyr.NewCreateCommand(aliasScalyrRoot.CmdClause, data) + aliasScalyrDelete := aliasscalyr.NewDeleteCommand(aliasScalyrRoot.CmdClause, data) + aliasScalyrDescribe := aliasscalyr.NewDescribeCommand(aliasScalyrRoot.CmdClause, data) + aliasScalyrList := aliasscalyr.NewListCommand(aliasScalyrRoot.CmdClause, data) + aliasScalyrUpdate := aliasscalyr.NewUpdateCommand(aliasScalyrRoot.CmdClause, data) + aliasSftpRoot := aliassftp.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasSftpCreate := aliassftp.NewCreateCommand(aliasSftpRoot.CmdClause, data) + aliasSftpDelete := aliassftp.NewDeleteCommand(aliasSftpRoot.CmdClause, data) + aliasSftpDescribe := aliassftp.NewDescribeCommand(aliasSftpRoot.CmdClause, data) + aliasSftpList := aliassftp.NewListCommand(aliasSftpRoot.CmdClause, data) + aliasSftpUpdate := aliassftp.NewUpdateCommand(aliasSftpRoot.CmdClause, data) + aliasSplunkRoot := aliassplunk.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasSplunkCreate := aliassplunk.NewCreateCommand(aliasSplunkRoot.CmdClause, data) + aliasSplunkDelete := aliassplunk.NewDeleteCommand(aliasSplunkRoot.CmdClause, data) + aliasSplunkDescribe := aliassplunk.NewDescribeCommand(aliasSplunkRoot.CmdClause, data) + aliasSplunkList := aliassplunk.NewListCommand(aliasSplunkRoot.CmdClause, data) + aliasSplunkUpdate := aliassplunk.NewUpdateCommand(aliasSplunkRoot.CmdClause, data) + aliasSumologicRoot := aliassumologic.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasSumologicCreate := aliassumologic.NewCreateCommand(aliasSumologicRoot.CmdClause, data) + aliasSumologicDelete := aliassumologic.NewDeleteCommand(aliasSumologicRoot.CmdClause, data) + aliasSumologicDescribe := aliassumologic.NewDescribeCommand(aliasSumologicRoot.CmdClause, data) + aliasSumologicList := aliassumologic.NewListCommand(aliasSumologicRoot.CmdClause, data) + aliasSumologicUpdate := aliassumologic.NewUpdateCommand(aliasSumologicRoot.CmdClause, data) + aliasSyslogRoot := aliassyslog.NewRootCommand(aliasLoggingRoot.CmdClause, data) + aliasSyslogCreate := aliassyslog.NewCreateCommand(aliasSyslogRoot.CmdClause, data) + aliasSyslogDelete := aliassyslog.NewDeleteCommand(aliasSyslogRoot.CmdClause, data) + aliasSyslogDescribe := aliassyslog.NewDescribeCommand(aliasSyslogRoot.CmdClause, data) + aliasSyslogList := aliassyslog.NewListCommand(aliasSyslogRoot.CmdClause, data) + aliasSyslogUpdate := aliassyslog.NewUpdateCommand(aliasSyslogRoot.CmdClause, data) return []argparser.Command{ shellcompleteCmdRoot, @@ -894,169 +1085,169 @@ func Define( // nolint:revive // function-length kvstoreentryDescribe, kvstoreentryList, logtailCmdRoot, - loggingAzureblobCmdRoot, - loggingAzureblobCreate, - loggingAzureblobDelete, - loggingAzureblobDescribe, - loggingAzureblobList, - loggingAzureblobUpdate, - loggingBigQueryCmdRoot, - loggingBigQueryCreate, - loggingBigQueryDelete, - loggingBigQueryDescribe, - loggingBigQueryList, - loggingBigQueryUpdate, - loggingCloudfilesCmdRoot, - loggingCloudfilesCreate, - loggingCloudfilesDelete, - loggingCloudfilesDescribe, - loggingCloudfilesList, - loggingCloudfilesUpdate, - loggingCmdRoot, - loggingDatadogCmdRoot, - loggingDatadogCreate, - loggingDatadogDelete, - loggingDatadogDescribe, - loggingDatadogList, - loggingDatadogUpdate, - loggingDigitaloceanCmdRoot, - loggingDigitaloceanCreate, - loggingDigitaloceanDelete, - loggingDigitaloceanDescribe, - loggingDigitaloceanList, - loggingDigitaloceanUpdate, - loggingElasticsearchCmdRoot, - loggingElasticsearchCreate, - loggingElasticsearchDelete, - loggingElasticsearchDescribe, - loggingElasticsearchList, - loggingElasticsearchUpdate, - loggingFtpCmdRoot, - loggingFtpCreate, - loggingFtpDelete, - loggingFtpDescribe, - loggingFtpList, - loggingFtpUpdate, - loggingGcsCmdRoot, - loggingGcsCreate, - loggingGcsDelete, - loggingGcsDescribe, - loggingGcsList, - loggingGcsUpdate, - loggingGooglepubsubCmdRoot, - loggingGooglepubsubCreate, - loggingGooglepubsubDelete, - loggingGooglepubsubDescribe, - loggingGooglepubsubList, - loggingGooglepubsubUpdate, - loggingGrafanacloudlogsCmdRoot, - loggingGrafanacloudlogsCreate, - loggingGrafanacloudlogsDelete, - loggingGrafanacloudlogsDescribe, - loggingGrafanacloudlogsList, - loggingGrafanacloudlogsUpdate, - loggingHerokuCmdRoot, - loggingHerokuCreate, - loggingHerokuDelete, - loggingHerokuDescribe, - loggingHerokuList, - loggingHerokuUpdate, - loggingHoneycombCmdRoot, - loggingHoneycombCreate, - loggingHoneycombDelete, - loggingHoneycombDescribe, - loggingHoneycombList, - loggingHoneycombUpdate, - loggingHTTPSCmdRoot, - loggingHTTPSCreate, - loggingHTTPSDelete, - loggingHTTPSDescribe, - loggingHTTPSList, - loggingHTTPSUpdate, - loggingKafkaCmdRoot, - loggingKafkaCreate, - loggingKafkaDelete, - loggingKafkaDescribe, - loggingKafkaList, - loggingKafkaUpdate, - loggingKinesisCmdRoot, - loggingKinesisCreate, - loggingKinesisDelete, - loggingKinesisDescribe, - loggingKinesisList, - loggingKinesisUpdate, - loggingLogglyCmdRoot, - loggingLogglyCreate, - loggingLogglyDelete, - loggingLogglyDescribe, - loggingLogglyList, - loggingLogglyUpdate, - loggingLogshuttleCmdRoot, - loggingLogshuttleCreate, - loggingLogshuttleDelete, - loggingLogshuttleDescribe, - loggingLogshuttleList, - loggingLogshuttleUpdate, - loggingNewRelicCmdRoot, - loggingNewRelicCreate, - loggingNewRelicDelete, - loggingNewRelicDescribe, - loggingNewRelicList, - loggingNewRelicUpdate, - loggingNewRelicOTLPCmdRoot, - loggingNewRelicOTLPCreate, - loggingNewRelicOTLPDelete, - loggingNewRelicOTLPDescribe, - loggingNewRelicOTLPList, - loggingNewRelicOTLPUpdate, - loggingOpenstackCmdRoot, - loggingOpenstackCreate, - loggingOpenstackDelete, - loggingOpenstackDescribe, - loggingOpenstackList, - loggingOpenstackUpdate, - loggingPapertrailCmdRoot, - loggingPapertrailCreate, - loggingPapertrailDelete, - loggingPapertrailDescribe, - loggingPapertrailList, - loggingPapertrailUpdate, - loggingS3CmdRoot, - loggingS3Create, - loggingS3Delete, - loggingS3Describe, - loggingS3List, - loggingS3Update, - loggingScalyrCmdRoot, - loggingScalyrCreate, - loggingScalyrDelete, - loggingScalyrDescribe, - loggingScalyrList, - loggingScalyrUpdate, - loggingSftpCmdRoot, - loggingSftpCreate, - loggingSftpDelete, - loggingSftpDescribe, - loggingSftpList, - loggingSftpUpdate, - loggingSplunkCmdRoot, - loggingSplunkCreate, - loggingSplunkDelete, - loggingSplunkDescribe, - loggingSplunkList, - loggingSplunkUpdate, - loggingSumologicCmdRoot, - loggingSumologicCreate, - loggingSumologicDelete, - loggingSumologicDescribe, - loggingSumologicList, - loggingSumologicUpdate, - loggingSyslogCmdRoot, - loggingSyslogCreate, - loggingSyslogDelete, - loggingSyslogDescribe, - loggingSyslogList, - loggingSyslogUpdate, + serviceloggingAzureblobCmdRoot, + serviceloggingAzureblobCreate, + serviceloggingAzureblobDelete, + serviceloggingAzureblobDescribe, + serviceloggingAzureblobList, + serviceloggingAzureblobUpdate, + serviceloggingBigQueryCmdRoot, + serviceloggingBigQueryCreate, + serviceloggingBigQueryDelete, + serviceloggingBigQueryDescribe, + serviceloggingBigQueryList, + serviceloggingBigQueryUpdate, + serviceloggingCloudfilesCmdRoot, + serviceloggingCloudfilesCreate, + serviceloggingCloudfilesDelete, + serviceloggingCloudfilesDescribe, + serviceloggingCloudfilesList, + serviceloggingCloudfilesUpdate, + serviceloggingCmdRoot, + serviceloggingDatadogCmdRoot, + serviceloggingDatadogCreate, + serviceloggingDatadogDelete, + serviceloggingDatadogDescribe, + serviceloggingDatadogList, + serviceloggingDatadogUpdate, + serviceloggingDigitaloceanCmdRoot, + serviceloggingDigitaloceanCreate, + serviceloggingDigitaloceanDelete, + serviceloggingDigitaloceanDescribe, + serviceloggingDigitaloceanList, + serviceloggingDigitaloceanUpdate, + serviceloggingElasticsearchCmdRoot, + serviceloggingElasticsearchCreate, + serviceloggingElasticsearchDelete, + serviceloggingElasticsearchDescribe, + serviceloggingElasticsearchList, + serviceloggingElasticsearchUpdate, + serviceloggingFtpCmdRoot, + serviceloggingFtpCreate, + serviceloggingFtpDelete, + serviceloggingFtpDescribe, + serviceloggingFtpList, + serviceloggingFtpUpdate, + serviceloggingGcsCmdRoot, + serviceloggingGcsCreate, + serviceloggingGcsDelete, + serviceloggingGcsDescribe, + serviceloggingGcsList, + serviceloggingGcsUpdate, + serviceloggingGooglepubsubCmdRoot, + serviceloggingGooglepubsubCreate, + serviceloggingGooglepubsubDelete, + serviceloggingGooglepubsubDescribe, + serviceloggingGooglepubsubList, + serviceloggingGooglepubsubUpdate, + serviceloggingGrafanacloudlogsCmdRoot, + serviceloggingGrafanacloudlogsCreate, + serviceloggingGrafanacloudlogsDelete, + serviceloggingGrafanacloudlogsDescribe, + serviceloggingGrafanacloudlogsList, + serviceloggingGrafanacloudlogsUpdate, + serviceloggingHerokuCmdRoot, + serviceloggingHerokuCreate, + serviceloggingHerokuDelete, + serviceloggingHerokuDescribe, + serviceloggingHerokuList, + serviceloggingHerokuUpdate, + serviceloggingHoneycombCmdRoot, + serviceloggingHoneycombCreate, + serviceloggingHoneycombDelete, + serviceloggingHoneycombDescribe, + serviceloggingHoneycombList, + serviceloggingHoneycombUpdate, + serviceloggingHTTPSCmdRoot, + serviceloggingHTTPSCreate, + serviceloggingHTTPSDelete, + serviceloggingHTTPSDescribe, + serviceloggingHTTPSList, + serviceloggingHTTPSUpdate, + serviceloggingKafkaCmdRoot, + serviceloggingKafkaCreate, + serviceloggingKafkaDelete, + serviceloggingKafkaDescribe, + serviceloggingKafkaList, + serviceloggingKafkaUpdate, + serviceloggingKinesisCmdRoot, + serviceloggingKinesisCreate, + serviceloggingKinesisDelete, + serviceloggingKinesisDescribe, + serviceloggingKinesisList, + serviceloggingKinesisUpdate, + serviceloggingLogglyCmdRoot, + serviceloggingLogglyCreate, + serviceloggingLogglyDelete, + serviceloggingLogglyDescribe, + serviceloggingLogglyList, + serviceloggingLogglyUpdate, + serviceloggingLogshuttleCmdRoot, + serviceloggingLogshuttleCreate, + serviceloggingLogshuttleDelete, + serviceloggingLogshuttleDescribe, + serviceloggingLogshuttleList, + serviceloggingLogshuttleUpdate, + serviceloggingNewRelicCmdRoot, + serviceloggingNewRelicCreate, + serviceloggingNewRelicDelete, + serviceloggingNewRelicDescribe, + serviceloggingNewRelicList, + serviceloggingNewRelicUpdate, + serviceloggingNewRelicOTLPCmdRoot, + serviceloggingNewRelicOTLPCreate, + serviceloggingNewRelicOTLPDelete, + serviceloggingNewRelicOTLPDescribe, + serviceloggingNewRelicOTLPList, + serviceloggingNewRelicOTLPUpdate, + serviceloggingOpenstackCmdRoot, + serviceloggingOpenstackCreate, + serviceloggingOpenstackDelete, + serviceloggingOpenstackDescribe, + serviceloggingOpenstackList, + serviceloggingOpenstackUpdate, + serviceloggingPapertrailCmdRoot, + serviceloggingPapertrailCreate, + serviceloggingPapertrailDelete, + serviceloggingPapertrailDescribe, + serviceloggingPapertrailList, + serviceloggingPapertrailUpdate, + serviceloggingS3CmdRoot, + serviceloggingS3Create, + serviceloggingS3Delete, + serviceloggingS3Describe, + serviceloggingS3List, + serviceloggingS3Update, + serviceloggingScalyrCmdRoot, + serviceloggingScalyrCreate, + serviceloggingScalyrDelete, + serviceloggingScalyrDescribe, + serviceloggingScalyrList, + serviceloggingScalyrUpdate, + serviceloggingSftpCmdRoot, + serviceloggingSftpCreate, + serviceloggingSftpDelete, + serviceloggingSftpDescribe, + serviceloggingSftpList, + serviceloggingSftpUpdate, + serviceloggingSplunkCmdRoot, + serviceloggingSplunkCreate, + serviceloggingSplunkDelete, + serviceloggingSplunkDescribe, + serviceloggingSplunkList, + serviceloggingSplunkUpdate, + serviceloggingSumologicCmdRoot, + serviceloggingSumologicCreate, + serviceloggingSumologicDelete, + serviceloggingSumologicDescribe, + serviceloggingSumologicList, + serviceloggingSumologicUpdate, + serviceloggingSyslogCmdRoot, + serviceloggingSyslogCreate, + serviceloggingSyslogDelete, + serviceloggingSyslogDescribe, + serviceloggingSyslogList, + serviceloggingSyslogUpdate, ngwafRoot, ngwafRedactionCreate, ngwafRedactionDelete, @@ -1476,5 +1667,168 @@ func Define( // nolint:revive // function-length aliasServiceVersionStage, aliasServiceVersionUnstage, aliasServiceVersionUpdate, + aliasLoggingRoot, + aliasAzureblobRoot, + aliasAzureblobCreate, + aliasAzureblobDelete, + aliasAzureblobDescribe, + aliasAzureblobList, + aliasAzureblobUpdate, + aliasBigqueryRoot, + aliasBigqueryCreate, + aliasBigqueryDelete, + aliasBigqueryDescribe, + aliasBigqueryList, + aliasBigqueryUpdate, + aliasCloudfilesRoot, + aliasCloudfilesCreate, + aliasCloudfilesDelete, + aliasCloudfilesDescribe, + aliasCloudfilesList, + aliasCloudfilesUpdate, + aliasDatadogRoot, + aliasDatadogCreate, + aliasDatadogDelete, + aliasDatadogDescribe, + aliasDatadogList, + aliasDatadogUpdate, + aliasDigitaloceanRoot, + aliasDigitaloceanCreate, + aliasDigitaloceanDelete, + aliasDigitaloceanDescribe, + aliasDigitaloceanList, + aliasDigitaloceanUpdate, + aliasElasticsearchRoot, + aliasElasticsearchCreate, + aliasElasticsearchDelete, + aliasElasticsearchDescribe, + aliasElasticsearchList, + aliasElasticsearchUpdate, + aliasFtpRoot, + aliasFtpCreate, + aliasFtpDelete, + aliasFtpDescribe, + aliasFtpList, + aliasFtpUpdate, + aliasGcsRoot, + aliasGcsCreate, + aliasGcsDelete, + aliasGcsDescribe, + aliasGcsList, + aliasGcsUpdate, + aliasGooglepubsubRoot, + aliasGooglepubsubCreate, + aliasGooglepubsubDelete, + aliasGooglepubsubDescribe, + aliasGooglepubsubList, + aliasGooglepubsubUpdate, + aliasGrafanacloudlogsRoot, + aliasGrafanacloudlogsCreate, + aliasGrafanacloudlogsDelete, + aliasGrafanacloudlogsDescribe, + aliasGrafanacloudlogsList, + aliasGrafanacloudlogsUpdate, + aliasHerokuRoot, + aliasHerokuCreate, + aliasHerokuDelete, + aliasHerokuDescribe, + aliasHerokuList, + aliasHerokuUpdate, + aliasHoneycombRoot, + aliasHoneycombCreate, + aliasHoneycombDelete, + aliasHoneycombDescribe, + aliasHoneycombList, + aliasHoneycombUpdate, + aliasHTTPSRoot, + aliasHTTPSCreate, + aliasHTTPSDelete, + aliasHTTPSDescribe, + aliasHTTPSList, + aliasHTTPSUpdate, + aliasKafkaRoot, + aliasKafkaCreate, + aliasKafkaDelete, + aliasKafkaDescribe, + aliasKafkaList, + aliasKafkaUpdate, + aliasKinesisRoot, + aliasKinesisCreate, + aliasKinesisDelete, + aliasKinesisDescribe, + aliasKinesisList, + aliasKinesisUpdate, + aliasLogglyRoot, + aliasLogglyCreate, + aliasLogglyDelete, + aliasLogglyDescribe, + aliasLogglyList, + aliasLogglyUpdate, + aliasLogshuttleRoot, + aliasLogshuttleCreate, + aliasLogshuttleDelete, + aliasLogshuttleDescribe, + aliasLogshuttleList, + aliasLogshuttleUpdate, + aliasNewrelicRoot, + aliasNewrelicCreate, + aliasNewrelicDelete, + aliasNewrelicDescribe, + aliasNewrelicList, + aliasNewrelicUpdate, + aliasNewrelicotlpRoot, + aliasNewrelicotlpCreate, + aliasNewrelicotlpDelete, + aliasNewrelicotlpDescribe, + aliasNewrelicotlpList, + aliasNewrelicotlpUpdate, + aliasOpenstackRoot, + aliasOpenstackCreate, + aliasOpenstackDelete, + aliasOpenstackDescribe, + aliasOpenstackList, + aliasOpenstackUpdate, + aliasPapertrailRoot, + aliasPapertrailCreate, + aliasPapertrailDelete, + aliasPapertrailDescribe, + aliasPapertrailList, + aliasPapertrailUpdate, + aliasS3Root, + aliasS3Create, + aliasS3Delete, + aliasS3Describe, + aliasS3List, + aliasS3Update, + aliasScalyrRoot, + aliasScalyrCreate, + aliasScalyrDelete, + aliasScalyrDescribe, + aliasScalyrList, + aliasScalyrUpdate, + aliasSftpRoot, + aliasSftpCreate, + aliasSftpDelete, + aliasSftpDescribe, + aliasSftpList, + aliasSftpUpdate, + aliasSplunkRoot, + aliasSplunkCreate, + aliasSplunkDelete, + aliasSplunkDescribe, + aliasSplunkList, + aliasSplunkUpdate, + aliasSumologicRoot, + aliasSumologicCreate, + aliasSumologicDelete, + aliasSumologicDescribe, + aliasSumologicList, + aliasSumologicUpdate, + aliasSyslogRoot, + aliasSyslogCreate, + aliasSyslogDelete, + aliasSyslogDescribe, + aliasSyslogList, + aliasSyslogUpdate, } } diff --git a/pkg/commands/logging/loggly/loggly_integration_test.go b/pkg/commands/logging/loggly/loggly_integration_test.go deleted file mode 100644 index 0dfbade3a..000000000 --- a/pkg/commands/logging/loggly/loggly_integration_test.go +++ /dev/null @@ -1,411 +0,0 @@ -package loggly_test - -import ( - "bytes" - "context" - "errors" - "io" - "strings" - "testing" - - "github.com/fastly/go-fastly/v12/fastly" - - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" - "github.com/fastly/cli/pkg/mock" - "github.com/fastly/cli/pkg/testutil" -) - -func TestLogglyCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging loggly create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - CreateLogglyFn: createLogglyOK, - }, - wantOutput: "Created Loggly logging endpoint log (service 123 version 4)", - }, - { - args: args("logging loggly create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - CreateLogglyFn: createLogglyError, - }, - wantError: errTest.Error(), - }, - } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } -} - -func TestLogglyList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging loggly list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysOK, - }, - wantOutput: listLogglysShortOutput, - }, - { - args: args("logging loggly list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysOK, - }, - wantOutput: listLogglysVerboseOutput, - }, - { - args: args("logging loggly list --service-id 123 --version 1 -v"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysOK, - }, - wantOutput: listLogglysVerboseOutput, - }, - { - args: args("logging loggly --verbose list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysOK, - }, - wantOutput: listLogglysVerboseOutput, - }, - { - args: args("logging -v loggly list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysOK, - }, - wantOutput: listLogglysVerboseOutput, - }, - { - args: args("logging loggly list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogglyFn: listLogglysError, - }, - wantError: errTest.Error(), - }, - } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } -} - -func TestLogglyDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging loggly describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", - }, - { - args: args("logging loggly describe --service-id 123 --version 1 --name logs"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - GetLogglyFn: getLogglyError, - }, - wantError: errTest.Error(), - }, - { - args: args("logging loggly describe --service-id 123 --version 1 --name logs"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - GetLogglyFn: getLogglyOK, - }, - wantOutput: describeLogglyOutput, - }, - } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } -} - -func TestLogglyUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging loggly update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", - }, - { - args: args("logging loggly update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - UpdateLogglyFn: updateLogglyError, - }, - wantError: errTest.Error(), - }, - { - args: args("logging loggly update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - UpdateLogglyFn: updateLogglyOK, - }, - wantOutput: "Updated Loggly logging endpoint log (service 123 version 4)", - }, - } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } -} - -func TestLogglyDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging loggly delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", - }, - { - args: args("logging loggly delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - DeleteLogglyFn: deleteLogglyError, - }, - wantError: errTest.Error(), - }, - { - args: args("logging loggly delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - DeleteLogglyFn: deleteLogglyOK, - }, - wantOutput: "Deleted Loggly logging endpoint logs (service 123 version 4)", - }, - } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } -} - -var errTest = errors.New("fixture error") - -func createLogglyOK(_ context.Context, i *fastly.CreateLogglyInput) (*fastly.Loggly, error) { - s := fastly.Loggly{ - ServiceID: fastly.ToPointer(i.ServiceID), - ServiceVersion: fastly.ToPointer(i.ServiceVersion), - } - - if i.Name != nil { - s.Name = i.Name - } - - return &s, nil -} - -func createLogglyError(_ context.Context, _ *fastly.CreateLogglyInput) (*fastly.Loggly, error) { - return nil, errTest -} - -func listLogglysOK(_ context.Context, i *fastly.ListLogglyInput) ([]*fastly.Loggly, error) { - return []*fastly.Loggly{ - { - ServiceID: fastly.ToPointer(i.ServiceID), - ServiceVersion: fastly.ToPointer(i.ServiceVersion), - Name: fastly.ToPointer("logs"), - Token: fastly.ToPointer("abc"), - Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), - FormatVersion: fastly.ToPointer(2), - ResponseCondition: fastly.ToPointer("Prevent default logging"), - Placement: fastly.ToPointer("none"), - ProcessingRegion: fastly.ToPointer("us"), - }, - { - ServiceID: fastly.ToPointer(i.ServiceID), - ServiceVersion: fastly.ToPointer(i.ServiceVersion), - Name: fastly.ToPointer("analytics"), - Token: fastly.ToPointer("abc"), - Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), - FormatVersion: fastly.ToPointer(2), - ResponseCondition: fastly.ToPointer("Prevent default logging"), - Placement: fastly.ToPointer("none"), - ProcessingRegion: fastly.ToPointer("us"), - }, - }, nil -} - -func listLogglysError(_ context.Context, _ *fastly.ListLogglyInput) ([]*fastly.Loggly, error) { - return nil, errTest -} - -var listLogglysShortOutput = strings.TrimSpace(` -SERVICE VERSION NAME -123 1 logs -123 1 analytics -`) + "\n" - -var listLogglysVerboseOutput = strings.TrimSpace(` -Fastly API endpoint: https://api.fastly.com -Fastly API token provided via config file (profile: user) - -Service ID (via --service-id): 123 - -Version: 1 - Loggly 1/2 - Service ID: 123 - Version: 1 - Name: logs - Token: abc - Format: %h %l %u %t "%r" %>s %b - Format version: 2 - Response condition: Prevent default logging - Placement: none - Processing region: us - Loggly 2/2 - Service ID: 123 - Version: 1 - Name: analytics - Token: abc - Format: %h %l %u %t "%r" %>s %b - Format version: 2 - Response condition: Prevent default logging - Placement: none - Processing region: us -`) + "\n\n" - -func getLogglyOK(_ context.Context, i *fastly.GetLogglyInput) (*fastly.Loggly, error) { - return &fastly.Loggly{ - ServiceID: fastly.ToPointer(i.ServiceID), - ServiceVersion: fastly.ToPointer(i.ServiceVersion), - Name: fastly.ToPointer("logs"), - Token: fastly.ToPointer("abc"), - Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), - FormatVersion: fastly.ToPointer(2), - ResponseCondition: fastly.ToPointer("Prevent default logging"), - Placement: fastly.ToPointer("none"), - ProcessingRegion: fastly.ToPointer("us"), - }, nil -} - -func getLogglyError(_ context.Context, _ *fastly.GetLogglyInput) (*fastly.Loggly, error) { - return nil, errTest -} - -var describeLogglyOutput = "\n" + strings.TrimSpace(` -Format: %h %l %u %t "%r" %>s %b -Format version: 2 -Name: logs -Placement: none -Processing region: us -Response condition: Prevent default logging -Service ID: 123 -Token: abc -Version: 1 -`) + "\n" - -func updateLogglyOK(_ context.Context, i *fastly.UpdateLogglyInput) (*fastly.Loggly, error) { - return &fastly.Loggly{ - ServiceID: fastly.ToPointer(i.ServiceID), - ServiceVersion: fastly.ToPointer(i.ServiceVersion), - Name: fastly.ToPointer("log"), - Token: fastly.ToPointer("abc"), - Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), - FormatVersion: fastly.ToPointer(2), - ResponseCondition: fastly.ToPointer("Prevent default logging"), - }, nil -} - -func updateLogglyError(_ context.Context, _ *fastly.UpdateLogglyInput) (*fastly.Loggly, error) { - return nil, errTest -} - -func deleteLogglyOK(_ context.Context, _ *fastly.DeleteLogglyInput) error { - return nil -} - -func deleteLogglyError(_ context.Context, _ *fastly.DeleteLogglyInput) error { - return errTest -} diff --git a/pkg/commands/logging/azureblob/azureblob_integration_test.go b/pkg/commands/service/logging/azureblob/azureblob_integration_test.go similarity index 64% rename from pkg/commands/logging/azureblob/azureblob_integration_test.go rename to pkg/commands/service/logging/azureblob/azureblob_integration_test.go index 09a4bd3aa..2bc81dc0c 100644 --- a/pkg/commands/logging/azureblob/azureblob_integration_test.go +++ b/pkg/commands/service/logging/azureblob/azureblob_integration_test.go @@ -1,283 +1,172 @@ package azureblob_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/azureblob" ) func TestBlobStorageCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging azureblob create --service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateBlobStorageFn: createBlobStorageOK, }, - wantOutput: "Created Azure Blob Storage logging endpoint log (service 123 version 4)", + WantOutput: "Created Azure Blob Storage logging endpoint log (service 123 version 4)", }, { - args: args("logging azureblob create --service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateBlobStorageFn: createBlobStorageError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging azureblob create --service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --account-name account --container log --sas-token abc --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateBlobStorageFn: createBlobStorageError, }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestBlobStorageList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging azureblob list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListBlobStoragesFn: listBlobStoragesOK, - }, - wantOutput: listBlobStoragesShortOutput, - }, - { - args: args("logging azureblob list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListBlobStoragesFn: listBlobStoragesOK, - }, - wantOutput: listBlobStoragesVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging azureblob list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBlobStoragesFn: listBlobStoragesOK, }, - wantOutput: listBlobStoragesVerboseOutput, + WantOutput: listBlobStoragesShortOutput, }, { - args: args("logging azureblob --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBlobStoragesFn: listBlobStoragesOK, }, - wantOutput: listBlobStoragesVerboseOutput, + WantOutput: listBlobStoragesVerboseOutput, }, { - args: args("logging -v azureblob list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBlobStoragesFn: listBlobStoragesOK, }, - wantOutput: listBlobStoragesVerboseOutput, + WantOutput: listBlobStoragesVerboseOutput, }, { - args: args("logging azureblob list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBlobStoragesFn: listBlobStoragesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestBlobStorageDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging azureblob describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging azureblob describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetBlobStorageFn: getBlobStorageError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging azureblob describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetBlobStorageFn: getBlobStorageOK, }, - wantOutput: describeBlobStorageOutput, + WantOutput: describeBlobStorageOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestBlobStorageUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging azureblob update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging azureblob update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateBlobStorageFn: updateBlobStorageError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging azureblob update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateBlobStorageFn: updateBlobStorageOK, }, - wantOutput: "Updated Azure Blob Storage logging endpoint log (service 123 version 4)", + WantOutput: "Updated Azure Blob Storage logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestBlobStorageDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging azureblob delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging azureblob delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteBlobStorageFn: deleteBlobStorageError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging azureblob delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteBlobStorageFn: deleteBlobStorageOK, }, - wantOutput: "Deleted Azure Blob Storage logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Azure Blob Storage logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/azureblob/azureblob_test.go b/pkg/commands/service/logging/azureblob/azureblob_test.go similarity index 99% rename from pkg/commands/logging/azureblob/azureblob_test.go rename to pkg/commands/service/logging/azureblob/azureblob_test.go index 34d817eb1..654dcb711 100644 --- a/pkg/commands/logging/azureblob/azureblob_test.go +++ b/pkg/commands/service/logging/azureblob/azureblob_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/azureblob" + "github.com/fastly/cli/pkg/commands/service/logging/azureblob" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/azureblob/create.go b/pkg/commands/service/logging/azureblob/create.go similarity index 99% rename from pkg/commands/logging/azureblob/create.go rename to pkg/commands/service/logging/azureblob/create.go index dc00f2865..fa15857e4 100644 --- a/pkg/commands/logging/azureblob/create.go +++ b/pkg/commands/service/logging/azureblob/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/azureblob/delete.go b/pkg/commands/service/logging/azureblob/delete.go similarity index 100% rename from pkg/commands/logging/azureblob/delete.go rename to pkg/commands/service/logging/azureblob/delete.go diff --git a/pkg/commands/logging/azureblob/describe.go b/pkg/commands/service/logging/azureblob/describe.go similarity index 100% rename from pkg/commands/logging/azureblob/describe.go rename to pkg/commands/service/logging/azureblob/describe.go diff --git a/pkg/commands/logging/azureblob/doc.go b/pkg/commands/service/logging/azureblob/doc.go similarity index 100% rename from pkg/commands/logging/azureblob/doc.go rename to pkg/commands/service/logging/azureblob/doc.go diff --git a/pkg/commands/logging/azureblob/list.go b/pkg/commands/service/logging/azureblob/list.go similarity index 100% rename from pkg/commands/logging/azureblob/list.go rename to pkg/commands/service/logging/azureblob/list.go diff --git a/pkg/commands/logging/azureblob/root.go b/pkg/commands/service/logging/azureblob/root.go similarity index 100% rename from pkg/commands/logging/azureblob/root.go rename to pkg/commands/service/logging/azureblob/root.go diff --git a/pkg/commands/logging/azureblob/update.go b/pkg/commands/service/logging/azureblob/update.go similarity index 99% rename from pkg/commands/logging/azureblob/update.go rename to pkg/commands/service/logging/azureblob/update.go index ae7e07619..42ec1e21e 100644 --- a/pkg/commands/logging/azureblob/update.go +++ b/pkg/commands/service/logging/azureblob/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/bigquery/bigquery_integration_test.go b/pkg/commands/service/logging/bigquery/bigquery_integration_test.go similarity index 54% rename from pkg/commands/logging/bigquery/bigquery_integration_test.go rename to pkg/commands/service/logging/bigquery/bigquery_integration_test.go index d936530c7..8e58db0ae 100644 --- a/pkg/commands/logging/bigquery/bigquery_integration_test.go +++ b/pkg/commands/service/logging/bigquery/bigquery_integration_test.go @@ -1,274 +1,163 @@ package bigquery_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/bigquery" ) func TestBigQueryCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging bigquery create --service-id 123 --version 1 --name log --project-id project123 --dataset logs --table logs --user user@domain.com --secret-key `\"-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCA\"` --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --project-id project123 --dataset logs --table logs --user user@domain.com --secret-key `\"-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCA\"` --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateBigQueryFn: createBigQueryOK, }, - wantOutput: "Created BigQuery logging endpoint log (service 123 version 4)", + WantOutput: "Created BigQuery logging endpoint log (service 123 version 4)", }, { - args: args("logging bigquery create --service-id 123 --version 1 --name log --project-id project123 --dataset logs --table logs --user user@domain.com --secret-key `\"-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCA\"` --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --project-id project123 --dataset logs --table logs --user user@domain.com --secret-key `\"-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCA\"` --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateBigQueryFn: createBigQueryError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestBigQueryList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging bigquery list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListBigQueriesFn: listBigQueriesOK, - }, - wantOutput: listBigQueriesShortOutput, - }, - { - args: args("logging bigquery list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListBigQueriesFn: listBigQueriesOK, - }, - wantOutput: listBigQueriesVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging bigquery list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBigQueriesFn: listBigQueriesOK, }, - wantOutput: listBigQueriesVerboseOutput, + WantOutput: listBigQueriesShortOutput, }, { - args: args("logging bigquery --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBigQueriesFn: listBigQueriesOK, }, - wantOutput: listBigQueriesVerboseOutput, + WantOutput: listBigQueriesVerboseOutput, }, { - args: args("logging -v bigquery list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBigQueriesFn: listBigQueriesOK, }, - wantOutput: listBigQueriesVerboseOutput, + WantOutput: listBigQueriesVerboseOutput, }, { - args: args("logging bigquery list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListBigQueriesFn: listBigQueriesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestBigQueryDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging bigquery describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging bigquery describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetBigQueryFn: getBigQueryError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging bigquery describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetBigQueryFn: getBigQueryOK, }, - wantOutput: describeBigQueryOutput, + WantOutput: describeBigQueryOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestBigQueryUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging bigquery update --service-id 123 --version 1 --new-name log --project-id project123 --dataset logs --table logs --user user@domain.com --secret-key `\"-----BEGIN RSA PRIVATE KEY-----MIIEogIBAAKCA\"`"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging bigquery update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateBigQueryFn: updateBigQueryError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging bigquery update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateBigQueryFn: updateBigQueryOK, }, - wantOutput: "Updated BigQuery logging endpoint log (service 123 version 4)", + WantOutput: "Updated BigQuery logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestBigQueryDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging bigquery delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging bigquery delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteBigQueryFn: deleteBigQueryError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging bigquery delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteBigQueryFn: deleteBigQueryOK, }, - wantOutput: "Deleted BigQuery logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted BigQuery logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/bigquery/bigquery_test.go b/pkg/commands/service/logging/bigquery/bigquery_test.go similarity index 99% rename from pkg/commands/logging/bigquery/bigquery_test.go rename to pkg/commands/service/logging/bigquery/bigquery_test.go index 7f1efdb65..6b29b9431 100644 --- a/pkg/commands/logging/bigquery/bigquery_test.go +++ b/pkg/commands/service/logging/bigquery/bigquery_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/bigquery" + "github.com/fastly/cli/pkg/commands/service/logging/bigquery" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/bigquery/create.go b/pkg/commands/service/logging/bigquery/create.go similarity index 99% rename from pkg/commands/logging/bigquery/create.go rename to pkg/commands/service/logging/bigquery/create.go index 71ba26a45..3eeaee659 100644 --- a/pkg/commands/logging/bigquery/create.go +++ b/pkg/commands/service/logging/bigquery/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" fsterr "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/bigquery/delete.go b/pkg/commands/service/logging/bigquery/delete.go similarity index 100% rename from pkg/commands/logging/bigquery/delete.go rename to pkg/commands/service/logging/bigquery/delete.go diff --git a/pkg/commands/logging/bigquery/describe.go b/pkg/commands/service/logging/bigquery/describe.go similarity index 100% rename from pkg/commands/logging/bigquery/describe.go rename to pkg/commands/service/logging/bigquery/describe.go diff --git a/pkg/commands/logging/bigquery/doc.go b/pkg/commands/service/logging/bigquery/doc.go similarity index 100% rename from pkg/commands/logging/bigquery/doc.go rename to pkg/commands/service/logging/bigquery/doc.go diff --git a/pkg/commands/logging/bigquery/list.go b/pkg/commands/service/logging/bigquery/list.go similarity index 100% rename from pkg/commands/logging/bigquery/list.go rename to pkg/commands/service/logging/bigquery/list.go diff --git a/pkg/commands/logging/bigquery/root.go b/pkg/commands/service/logging/bigquery/root.go similarity index 100% rename from pkg/commands/logging/bigquery/root.go rename to pkg/commands/service/logging/bigquery/root.go diff --git a/pkg/commands/logging/bigquery/update.go b/pkg/commands/service/logging/bigquery/update.go similarity index 99% rename from pkg/commands/logging/bigquery/update.go rename to pkg/commands/service/logging/bigquery/update.go index dbd219ceb..2c78d8a36 100644 --- a/pkg/commands/logging/bigquery/update.go +++ b/pkg/commands/service/logging/bigquery/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" fsterr "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/cloudfiles/cloudfiles_integration_test.go b/pkg/commands/service/logging/cloudfiles/cloudfiles_integration_test.go similarity index 62% rename from pkg/commands/logging/cloudfiles/cloudfiles_integration_test.go rename to pkg/commands/service/logging/cloudfiles/cloudfiles_integration_test.go index e9082510e..98e425b52 100644 --- a/pkg/commands/logging/cloudfiles/cloudfiles_integration_test.go +++ b/pkg/commands/service/logging/cloudfiles/cloudfiles_integration_test.go @@ -1,282 +1,171 @@ package cloudfiles_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" ) func TestCloudfilesCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging cloudfiles create --service-id 123 --version 1 --name log --user username --bucket log --access-key foo --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user username --bucket log --access-key foo --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateCloudfilesFn: createCloudfilesOK, }, - wantOutput: "Created Cloudfiles logging endpoint log (service 123 version 4)", + WantOutput: "Created Cloudfiles logging endpoint log (service 123 version 4)", }, { - args: args("logging cloudfiles create --service-id 123 --version 1 --name log --user username --bucket log --access-key foo --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user username --bucket log --access-key foo --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateCloudfilesFn: createCloudfilesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging cloudfiles create --service-id 123 --version 1 --name log --user username --bucket log --access-key foo --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user username --bucket log --access-key foo --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestCloudfilesList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging cloudfiles list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListCloudfilesFn: listCloudfilesOK, - }, - wantOutput: listCloudfilesShortOutput, - }, - { - args: args("logging cloudfiles list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListCloudfilesFn: listCloudfilesOK, - }, - wantOutput: listCloudfilesVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging cloudfiles list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListCloudfilesFn: listCloudfilesOK, }, - wantOutput: listCloudfilesVerboseOutput, + WantOutput: listCloudfilesShortOutput, }, { - args: args("logging cloudfiles --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListCloudfilesFn: listCloudfilesOK, }, - wantOutput: listCloudfilesVerboseOutput, + WantOutput: listCloudfilesVerboseOutput, }, { - args: args("logging -v cloudfiles list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListCloudfilesFn: listCloudfilesOK, }, - wantOutput: listCloudfilesVerboseOutput, + WantOutput: listCloudfilesVerboseOutput, }, { - args: args("logging cloudfiles list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListCloudfilesFn: listCloudfilesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestCloudfilesDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging cloudfiles describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging cloudfiles describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetCloudfilesFn: getCloudfilesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging cloudfiles describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetCloudfilesFn: getCloudfilesOK, }, - wantOutput: describeCloudfilesOutput, + WantOutput: describeCloudfilesOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestCloudfilesUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging cloudfiles update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging cloudfiles update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateCloudfilesFn: updateCloudfilesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging cloudfiles update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateCloudfilesFn: updateCloudfilesOK, }, - wantOutput: "Updated Cloudfiles logging endpoint log (service 123 version 4)", + WantOutput: "Updated Cloudfiles logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestCloudfilesDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging cloudfiles delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging cloudfiles delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteCloudfilesFn: deleteCloudfilesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging cloudfiles delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteCloudfilesFn: deleteCloudfilesOK, }, - wantOutput: "Deleted Cloudfiles logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Cloudfiles logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/cloudfiles/cloudfiles_test.go b/pkg/commands/service/logging/cloudfiles/cloudfiles_test.go similarity index 99% rename from pkg/commands/logging/cloudfiles/cloudfiles_test.go rename to pkg/commands/service/logging/cloudfiles/cloudfiles_test.go index 75438d8f6..a05a7e9ea 100644 --- a/pkg/commands/logging/cloudfiles/cloudfiles_test.go +++ b/pkg/commands/service/logging/cloudfiles/cloudfiles_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/cloudfiles" + "github.com/fastly/cli/pkg/commands/service/logging/cloudfiles" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/cloudfiles/create.go b/pkg/commands/service/logging/cloudfiles/create.go similarity index 99% rename from pkg/commands/logging/cloudfiles/create.go rename to pkg/commands/service/logging/cloudfiles/create.go index 9959fa783..ed3393e73 100644 --- a/pkg/commands/logging/cloudfiles/create.go +++ b/pkg/commands/service/logging/cloudfiles/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" fsterr "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/cloudfiles/delete.go b/pkg/commands/service/logging/cloudfiles/delete.go similarity index 100% rename from pkg/commands/logging/cloudfiles/delete.go rename to pkg/commands/service/logging/cloudfiles/delete.go diff --git a/pkg/commands/logging/cloudfiles/describe.go b/pkg/commands/service/logging/cloudfiles/describe.go similarity index 100% rename from pkg/commands/logging/cloudfiles/describe.go rename to pkg/commands/service/logging/cloudfiles/describe.go diff --git a/pkg/commands/logging/cloudfiles/doc.go b/pkg/commands/service/logging/cloudfiles/doc.go similarity index 100% rename from pkg/commands/logging/cloudfiles/doc.go rename to pkg/commands/service/logging/cloudfiles/doc.go diff --git a/pkg/commands/logging/cloudfiles/list.go b/pkg/commands/service/logging/cloudfiles/list.go similarity index 100% rename from pkg/commands/logging/cloudfiles/list.go rename to pkg/commands/service/logging/cloudfiles/list.go diff --git a/pkg/commands/logging/cloudfiles/root.go b/pkg/commands/service/logging/cloudfiles/root.go similarity index 100% rename from pkg/commands/logging/cloudfiles/root.go rename to pkg/commands/service/logging/cloudfiles/root.go diff --git a/pkg/commands/logging/cloudfiles/update.go b/pkg/commands/service/logging/cloudfiles/update.go similarity index 99% rename from pkg/commands/logging/cloudfiles/update.go rename to pkg/commands/service/logging/cloudfiles/update.go index e21370f40..e5c96c8ee 100644 --- a/pkg/commands/logging/cloudfiles/update.go +++ b/pkg/commands/service/logging/cloudfiles/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" fsterr "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/datadog/create.go b/pkg/commands/service/logging/datadog/create.go similarity index 98% rename from pkg/commands/logging/datadog/create.go rename to pkg/commands/service/logging/datadog/create.go index 4ae2d1412..d620ffa38 100644 --- a/pkg/commands/logging/datadog/create.go +++ b/pkg/commands/service/logging/datadog/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/datadog/datadog_integration_test.go b/pkg/commands/service/logging/datadog/datadog_integration_test.go similarity index 50% rename from pkg/commands/logging/datadog/datadog_integration_test.go rename to pkg/commands/service/logging/datadog/datadog_integration_test.go index b8af017e6..eb91669e6 100644 --- a/pkg/commands/logging/datadog/datadog_integration_test.go +++ b/pkg/commands/service/logging/datadog/datadog_integration_test.go @@ -1,274 +1,162 @@ package datadog_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/datadog" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) func TestDatadogCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging datadog create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateDatadogFn: createDatadogOK, }, - wantOutput: "Created Datadog logging endpoint log (service 123 version 4)", + WantOutput: "Created Datadog logging endpoint log (service 123 version 4)", }, { - args: args("logging datadog create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateDatadogFn: createDatadogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestDatadogList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging datadog list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListDatadogFn: listDatadogsOK, - }, - wantOutput: listDatadogsShortOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging datadog list --service-id 123 --version 1 --verbose"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDatadogFn: listDatadogsOK, }, - wantOutput: listDatadogsVerboseOutput, + WantOutput: listDatadogsShortOutput, }, { - args: args("logging datadog list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDatadogFn: listDatadogsOK, }, - wantOutput: listDatadogsVerboseOutput, + WantOutput: listDatadogsVerboseOutput, }, { - args: args("logging datadog --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDatadogFn: listDatadogsOK, }, - wantOutput: listDatadogsVerboseOutput, + WantOutput: listDatadogsVerboseOutput, }, { - args: args("logging -v datadog list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListDatadogFn: listDatadogsOK, - }, - wantOutput: listDatadogsVerboseOutput, - }, - { - args: args("logging datadog list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDatadogFn: listDatadogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestDatadogDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging datadog describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging datadog describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetDatadogFn: getDatadogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging datadog describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetDatadogFn: getDatadogOK, }, - wantOutput: describeDatadogOutput, + WantOutput: describeDatadogOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestDatadogUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging datadog update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging datadog update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateDatadogFn: updateDatadogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging datadog update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateDatadogFn: updateDatadogOK, }, - wantOutput: "Updated Datadog logging endpoint log (service 123 version 4)", + WantOutput: "Updated Datadog logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestDatadogDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging datadog delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging datadog delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteDatadogFn: deleteDatadogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging datadog delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteDatadogFn: deleteDatadogOK, }, - wantOutput: "Deleted Datadog logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Datadog logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/datadog/datadog_test.go b/pkg/commands/service/logging/datadog/datadog_test.go similarity index 99% rename from pkg/commands/logging/datadog/datadog_test.go rename to pkg/commands/service/logging/datadog/datadog_test.go index 2e51a1157..7a1daf293 100644 --- a/pkg/commands/logging/datadog/datadog_test.go +++ b/pkg/commands/service/logging/datadog/datadog_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/datadog" + "github.com/fastly/cli/pkg/commands/service/logging/datadog" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/datadog/delete.go b/pkg/commands/service/logging/datadog/delete.go similarity index 100% rename from pkg/commands/logging/datadog/delete.go rename to pkg/commands/service/logging/datadog/delete.go diff --git a/pkg/commands/logging/datadog/describe.go b/pkg/commands/service/logging/datadog/describe.go similarity index 100% rename from pkg/commands/logging/datadog/describe.go rename to pkg/commands/service/logging/datadog/describe.go diff --git a/pkg/commands/logging/datadog/doc.go b/pkg/commands/service/logging/datadog/doc.go similarity index 100% rename from pkg/commands/logging/datadog/doc.go rename to pkg/commands/service/logging/datadog/doc.go diff --git a/pkg/commands/logging/datadog/list.go b/pkg/commands/service/logging/datadog/list.go similarity index 100% rename from pkg/commands/logging/datadog/list.go rename to pkg/commands/service/logging/datadog/list.go diff --git a/pkg/commands/logging/datadog/root.go b/pkg/commands/service/logging/datadog/root.go similarity index 100% rename from pkg/commands/logging/datadog/root.go rename to pkg/commands/service/logging/datadog/root.go diff --git a/pkg/commands/logging/datadog/update.go b/pkg/commands/service/logging/datadog/update.go similarity index 98% rename from pkg/commands/logging/datadog/update.go rename to pkg/commands/service/logging/datadog/update.go index 8c627c410..3dd7c7477 100644 --- a/pkg/commands/logging/datadog/update.go +++ b/pkg/commands/service/logging/datadog/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/digitalocean/create.go b/pkg/commands/service/logging/digitalocean/create.go similarity index 99% rename from pkg/commands/logging/digitalocean/create.go rename to pkg/commands/service/logging/digitalocean/create.go index c2cdde7a2..330b3eb15 100644 --- a/pkg/commands/logging/digitalocean/create.go +++ b/pkg/commands/service/logging/digitalocean/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/digitalocean/delete.go b/pkg/commands/service/logging/digitalocean/delete.go similarity index 100% rename from pkg/commands/logging/digitalocean/delete.go rename to pkg/commands/service/logging/digitalocean/delete.go diff --git a/pkg/commands/logging/digitalocean/describe.go b/pkg/commands/service/logging/digitalocean/describe.go similarity index 100% rename from pkg/commands/logging/digitalocean/describe.go rename to pkg/commands/service/logging/digitalocean/describe.go diff --git a/pkg/commands/logging/digitalocean/digitalocean_integration_test.go b/pkg/commands/service/logging/digitalocean/digitalocean_integration_test.go similarity index 63% rename from pkg/commands/logging/digitalocean/digitalocean_integration_test.go rename to pkg/commands/service/logging/digitalocean/digitalocean_integration_test.go index fae84a0fe..c45608c85 100644 --- a/pkg/commands/logging/digitalocean/digitalocean_integration_test.go +++ b/pkg/commands/service/logging/digitalocean/digitalocean_integration_test.go @@ -1,282 +1,171 @@ package digitalocean_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" ) func TestDigitalOceanCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging digitalocean create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateDigitalOceanFn: createDigitalOceanOK, }, - wantOutput: "Created DigitalOcean Spaces logging endpoint log (service 123 version 4)", + WantOutput: "Created DigitalOcean Spaces logging endpoint log (service 123 version 4)", }, { - args: args("logging digitalocean create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateDigitalOceanFn: createDigitalOceanError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging digitalocean create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key abc --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestDigitalOceanList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging digitalocean list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListDigitalOceansFn: listDigitalOceansOK, - }, - wantOutput: listDigitalOceansShortOutput, - }, - { - args: args("logging digitalocean list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListDigitalOceansFn: listDigitalOceansOK, - }, - wantOutput: listDigitalOceansVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging digitalocean list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDigitalOceansFn: listDigitalOceansOK, }, - wantOutput: listDigitalOceansVerboseOutput, + WantOutput: listDigitalOceansShortOutput, }, { - args: args("logging digitalocean --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDigitalOceansFn: listDigitalOceansOK, }, - wantOutput: listDigitalOceansVerboseOutput, + WantOutput: listDigitalOceansVerboseOutput, }, { - args: args("logging -v digitalocean list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDigitalOceansFn: listDigitalOceansOK, }, - wantOutput: listDigitalOceansVerboseOutput, + WantOutput: listDigitalOceansVerboseOutput, }, { - args: args("logging digitalocean list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListDigitalOceansFn: listDigitalOceansError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestDigitalOceanDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging digitalocean describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging digitalocean describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetDigitalOceanFn: getDigitalOceanError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging digitalocean describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetDigitalOceanFn: getDigitalOceanOK, }, - wantOutput: describeDigitalOceanOutput, + WantOutput: describeDigitalOceanOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestDigitalOceanUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging digitalocean update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging digitalocean update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateDigitalOceanFn: updateDigitalOceanError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging digitalocean update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateDigitalOceanFn: updateDigitalOceanOK, }, - wantOutput: "Updated DigitalOcean Spaces logging endpoint log (service 123 version 4)", + WantOutput: "Updated DigitalOcean Spaces logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestDigitalOceanDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging digitalocean delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging digitalocean delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteDigitalOceanFn: deleteDigitalOceanError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging digitalocean delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteDigitalOceanFn: deleteDigitalOceanOK, }, - wantOutput: "Deleted DigitalOcean Spaces logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted DigitalOcean Spaces logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/digitalocean/digitalocean_test.go b/pkg/commands/service/logging/digitalocean/digitalocean_test.go similarity index 99% rename from pkg/commands/logging/digitalocean/digitalocean_test.go rename to pkg/commands/service/logging/digitalocean/digitalocean_test.go index 2afbb6fb7..6d441b9fe 100644 --- a/pkg/commands/logging/digitalocean/digitalocean_test.go +++ b/pkg/commands/service/logging/digitalocean/digitalocean_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/digitalocean" + "github.com/fastly/cli/pkg/commands/service/logging/digitalocean" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/digitalocean/doc.go b/pkg/commands/service/logging/digitalocean/doc.go similarity index 100% rename from pkg/commands/logging/digitalocean/doc.go rename to pkg/commands/service/logging/digitalocean/doc.go diff --git a/pkg/commands/logging/digitalocean/list.go b/pkg/commands/service/logging/digitalocean/list.go similarity index 100% rename from pkg/commands/logging/digitalocean/list.go rename to pkg/commands/service/logging/digitalocean/list.go diff --git a/pkg/commands/logging/digitalocean/root.go b/pkg/commands/service/logging/digitalocean/root.go similarity index 100% rename from pkg/commands/logging/digitalocean/root.go rename to pkg/commands/service/logging/digitalocean/root.go diff --git a/pkg/commands/logging/digitalocean/update.go b/pkg/commands/service/logging/digitalocean/update.go similarity index 99% rename from pkg/commands/logging/digitalocean/update.go rename to pkg/commands/service/logging/digitalocean/update.go index 08bcf2fd7..b828f9030 100644 --- a/pkg/commands/logging/digitalocean/update.go +++ b/pkg/commands/service/logging/digitalocean/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/doc.go b/pkg/commands/service/logging/doc.go similarity index 100% rename from pkg/commands/logging/doc.go rename to pkg/commands/service/logging/doc.go diff --git a/pkg/commands/logging/elasticsearch/create.go b/pkg/commands/service/logging/elasticsearch/create.go similarity index 99% rename from pkg/commands/logging/elasticsearch/create.go rename to pkg/commands/service/logging/elasticsearch/create.go index 29593afb2..6c4f275d2 100644 --- a/pkg/commands/logging/elasticsearch/create.go +++ b/pkg/commands/service/logging/elasticsearch/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/elasticsearch/delete.go b/pkg/commands/service/logging/elasticsearch/delete.go similarity index 100% rename from pkg/commands/logging/elasticsearch/delete.go rename to pkg/commands/service/logging/elasticsearch/delete.go diff --git a/pkg/commands/logging/elasticsearch/describe.go b/pkg/commands/service/logging/elasticsearch/describe.go similarity index 100% rename from pkg/commands/logging/elasticsearch/describe.go rename to pkg/commands/service/logging/elasticsearch/describe.go diff --git a/pkg/commands/logging/elasticsearch/doc.go b/pkg/commands/service/logging/elasticsearch/doc.go similarity index 100% rename from pkg/commands/logging/elasticsearch/doc.go rename to pkg/commands/service/logging/elasticsearch/doc.go diff --git a/pkg/commands/logging/elasticsearch/elasticsearch_integration_test.go b/pkg/commands/service/logging/elasticsearch/elasticsearch_integration_test.go similarity index 62% rename from pkg/commands/logging/elasticsearch/elasticsearch_integration_test.go rename to pkg/commands/service/logging/elasticsearch/elasticsearch_integration_test.go index c60c3f456..1cf6d6296 100644 --- a/pkg/commands/logging/elasticsearch/elasticsearch_integration_test.go +++ b/pkg/commands/service/logging/elasticsearch/elasticsearch_integration_test.go @@ -1,274 +1,163 @@ package elasticsearch_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" ) func TestElasticsearchCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging elasticsearch create --service-id 123 --version 1 --name log --index logs --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --index logs --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateElasticsearchFn: createElasticsearchOK, }, - wantOutput: "Created Elasticsearch logging endpoint log (service 123 version 4)", + WantOutput: "Created Elasticsearch logging endpoint log (service 123 version 4)", }, { - args: args("logging elasticsearch create --service-id 123 --version 1 --name log --index logs --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --index logs --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateElasticsearchFn: createElasticsearchError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestElasticsearchList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging elasticsearch list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListElasticsearchFn: listElasticsearchsOK, - }, - wantOutput: listElasticsearchsShortOutput, - }, - { - args: args("logging elasticsearch list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListElasticsearchFn: listElasticsearchsOK, - }, - wantOutput: listElasticsearchsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging elasticsearch list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListElasticsearchFn: listElasticsearchsOK, }, - wantOutput: listElasticsearchsVerboseOutput, + WantOutput: listElasticsearchsShortOutput, }, { - args: args("logging elasticsearch --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListElasticsearchFn: listElasticsearchsOK, }, - wantOutput: listElasticsearchsVerboseOutput, + WantOutput: listElasticsearchsVerboseOutput, }, { - args: args("logging -v elasticsearch list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListElasticsearchFn: listElasticsearchsOK, }, - wantOutput: listElasticsearchsVerboseOutput, + WantOutput: listElasticsearchsVerboseOutput, }, { - args: args("logging elasticsearch list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListElasticsearchFn: listElasticsearchsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestElasticsearchDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging elasticsearch describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging elasticsearch describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetElasticsearchFn: getElasticsearchError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging elasticsearch describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetElasticsearchFn: getElasticsearchOK, }, - wantOutput: describeElasticsearchOutput, + WantOutput: describeElasticsearchOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestElasticsearchUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging elasticsearch update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging elasticsearch update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateElasticsearchFn: updateElasticsearchError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging elasticsearch update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateElasticsearchFn: updateElasticsearchOK, }, - wantOutput: "Updated Elasticsearch logging endpoint log (service 123 version 4)", + WantOutput: "Updated Elasticsearch logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestElasticsearchDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging elasticsearch delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging elasticsearch delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteElasticsearchFn: deleteElasticsearchError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging elasticsearch delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteElasticsearchFn: deleteElasticsearchOK, }, - wantOutput: "Deleted Elasticsearch logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Elasticsearch logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/elasticsearch/elasticsearch_test.go b/pkg/commands/service/logging/elasticsearch/elasticsearch_test.go similarity index 99% rename from pkg/commands/logging/elasticsearch/elasticsearch_test.go rename to pkg/commands/service/logging/elasticsearch/elasticsearch_test.go index 98c4fe2dc..a9cd31975 100644 --- a/pkg/commands/logging/elasticsearch/elasticsearch_test.go +++ b/pkg/commands/service/logging/elasticsearch/elasticsearch_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/elasticsearch" + "github.com/fastly/cli/pkg/commands/service/logging/elasticsearch" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/elasticsearch/list.go b/pkg/commands/service/logging/elasticsearch/list.go similarity index 100% rename from pkg/commands/logging/elasticsearch/list.go rename to pkg/commands/service/logging/elasticsearch/list.go diff --git a/pkg/commands/logging/elasticsearch/root.go b/pkg/commands/service/logging/elasticsearch/root.go similarity index 100% rename from pkg/commands/logging/elasticsearch/root.go rename to pkg/commands/service/logging/elasticsearch/root.go diff --git a/pkg/commands/logging/elasticsearch/update.go b/pkg/commands/service/logging/elasticsearch/update.go similarity index 99% rename from pkg/commands/logging/elasticsearch/update.go rename to pkg/commands/service/logging/elasticsearch/update.go index 697c98c10..f2143d209 100644 --- a/pkg/commands/logging/elasticsearch/update.go +++ b/pkg/commands/service/logging/elasticsearch/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/ftp/create.go b/pkg/commands/service/logging/ftp/create.go similarity index 99% rename from pkg/commands/logging/ftp/create.go rename to pkg/commands/service/logging/ftp/create.go index 78ad01ee7..a1647e541 100644 --- a/pkg/commands/logging/ftp/create.go +++ b/pkg/commands/service/logging/ftp/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/ftp/delete.go b/pkg/commands/service/logging/ftp/delete.go similarity index 100% rename from pkg/commands/logging/ftp/delete.go rename to pkg/commands/service/logging/ftp/delete.go diff --git a/pkg/commands/logging/ftp/describe.go b/pkg/commands/service/logging/ftp/describe.go similarity index 100% rename from pkg/commands/logging/ftp/describe.go rename to pkg/commands/service/logging/ftp/describe.go diff --git a/pkg/commands/logging/ftp/doc.go b/pkg/commands/service/logging/ftp/doc.go similarity index 100% rename from pkg/commands/logging/ftp/doc.go rename to pkg/commands/service/logging/ftp/doc.go diff --git a/pkg/commands/logging/ftp/ftp_integration_test.go b/pkg/commands/service/logging/ftp/ftp_integration_test.go similarity index 61% rename from pkg/commands/logging/ftp/ftp_integration_test.go rename to pkg/commands/service/logging/ftp/ftp_integration_test.go index 741469d6d..11508e65f 100644 --- a/pkg/commands/logging/ftp/ftp_integration_test.go +++ b/pkg/commands/service/logging/ftp/ftp_integration_test.go @@ -1,282 +1,171 @@ package ftp_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/ftp" ) func TestFTPCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging ftp create --service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --compression-codec zstd --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --compression-codec zstd --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateFTPFn: createFTPOK, }, - wantOutput: "Created FTP logging endpoint log (service 123 version 4)", + WantOutput: "Created FTP logging endpoint log (service 123 version 4)", }, { - args: args("logging ftp create --service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateFTPFn: createFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging ftp create --service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user anonymous --password foo@example.com --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestFTPList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging ftp list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListFTPsFn: listFTPsOK, - }, - wantOutput: listFTPsShortOutput, - }, - { - args: args("logging ftp list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListFTPsFn: listFTPsOK, - }, - wantOutput: listFTPsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging ftp list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListFTPsFn: listFTPsOK, }, - wantOutput: listFTPsVerboseOutput, + WantOutput: listFTPsShortOutput, }, { - args: args("logging ftp --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListFTPsFn: listFTPsOK, }, - wantOutput: listFTPsVerboseOutput, + WantOutput: listFTPsVerboseOutput, }, { - args: args("logging -v ftp list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListFTPsFn: listFTPsOK, }, - wantOutput: listFTPsVerboseOutput, + WantOutput: listFTPsVerboseOutput, }, { - args: args("logging ftp list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListFTPsFn: listFTPsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestFTPDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging ftp describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging ftp describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetFTPFn: getFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging ftp describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetFTPFn: getFTPOK, }, - wantOutput: describeFTPOutput, + WantOutput: describeFTPOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestFTPUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging ftp update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging ftp update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateFTPFn: updateFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging ftp update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateFTPFn: updateFTPOK, }, - wantOutput: "Updated FTP logging endpoint log (service 123 version 4)", + WantOutput: "Updated FTP logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestFTPDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging ftp delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging ftp delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteFTPFn: deleteFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging ftp delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteFTPFn: deleteFTPOK, }, - wantOutput: "Deleted FTP logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted FTP logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/ftp/ftp_test.go b/pkg/commands/service/logging/ftp/ftp_test.go similarity index 99% rename from pkg/commands/logging/ftp/ftp_test.go rename to pkg/commands/service/logging/ftp/ftp_test.go index 27ca45cbb..5898a3575 100644 --- a/pkg/commands/logging/ftp/ftp_test.go +++ b/pkg/commands/service/logging/ftp/ftp_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/ftp" + "github.com/fastly/cli/pkg/commands/service/logging/ftp" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/ftp/list.go b/pkg/commands/service/logging/ftp/list.go similarity index 100% rename from pkg/commands/logging/ftp/list.go rename to pkg/commands/service/logging/ftp/list.go diff --git a/pkg/commands/logging/ftp/root.go b/pkg/commands/service/logging/ftp/root.go similarity index 100% rename from pkg/commands/logging/ftp/root.go rename to pkg/commands/service/logging/ftp/root.go diff --git a/pkg/commands/logging/ftp/update.go b/pkg/commands/service/logging/ftp/update.go similarity index 99% rename from pkg/commands/logging/ftp/update.go rename to pkg/commands/service/logging/ftp/update.go index 093983592..ac78f0035 100644 --- a/pkg/commands/logging/ftp/update.go +++ b/pkg/commands/service/logging/ftp/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/gcs/create.go b/pkg/commands/service/logging/gcs/create.go similarity index 99% rename from pkg/commands/logging/gcs/create.go rename to pkg/commands/service/logging/gcs/create.go index 696712429..ed8e162c0 100644 --- a/pkg/commands/logging/gcs/create.go +++ b/pkg/commands/service/logging/gcs/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/gcs/delete.go b/pkg/commands/service/logging/gcs/delete.go similarity index 100% rename from pkg/commands/logging/gcs/delete.go rename to pkg/commands/service/logging/gcs/delete.go diff --git a/pkg/commands/logging/gcs/describe.go b/pkg/commands/service/logging/gcs/describe.go similarity index 100% rename from pkg/commands/logging/gcs/describe.go rename to pkg/commands/service/logging/gcs/describe.go diff --git a/pkg/commands/logging/gcs/doc.go b/pkg/commands/service/logging/gcs/doc.go similarity index 100% rename from pkg/commands/logging/gcs/doc.go rename to pkg/commands/service/logging/gcs/doc.go diff --git a/pkg/commands/logging/gcs/gcs_integration_test.go b/pkg/commands/service/logging/gcs/gcs_integration_test.go similarity index 57% rename from pkg/commands/logging/gcs/gcs_integration_test.go rename to pkg/commands/service/logging/gcs/gcs_integration_test.go index 6f25f1755..b4d921299 100644 --- a/pkg/commands/logging/gcs/gcs_integration_test.go +++ b/pkg/commands/service/logging/gcs/gcs_integration_test.go @@ -1,291 +1,180 @@ package gcs_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/gcs" ) func TestGCSCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging gcs create --service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateGCSFn: createGCSOK, }, - wantOutput: "Created GCS logging endpoint log (service 123 version 4)", + WantOutput: "Created GCS logging endpoint log (service 123 version 4)", }, { - args: args("logging gcs create --service-id 123 --version 1 --name log --bucket log --account-name service-account-id --project-id gcp-prj-id --period 86400 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --account-name service-account-id --project-id gcp-prj-id --period 86400 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateGCSFn: createGCSOK, }, - wantOutput: "Created GCS logging endpoint log (service 123 version 4)", + WantOutput: "Created GCS logging endpoint log (service 123 version 4)", }, { - args: args("logging gcs create --service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateGCSFn: createGCSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging gcs create --service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --user foo@example.com --secret-key foo --period 86400 --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestGCSList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging gcs list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListGCSsFn: listGCSsOK, - }, - wantOutput: listGCSsShortOutput, - }, - { - args: args("logging gcs list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListGCSsFn: listGCSsOK, - }, - wantOutput: listGCSsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging gcs list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGCSsFn: listGCSsOK, }, - wantOutput: listGCSsVerboseOutput, + WantOutput: listGCSsShortOutput, }, { - args: args("logging gcs --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGCSsFn: listGCSsOK, }, - wantOutput: listGCSsVerboseOutput, + WantOutput: listGCSsVerboseOutput, }, { - args: args("logging -v gcs list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGCSsFn: listGCSsOK, }, - wantOutput: listGCSsVerboseOutput, + WantOutput: listGCSsVerboseOutput, }, { - args: args("logging gcs list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGCSsFn: listGCSsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestGCSDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging gcs describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging gcs describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetGCSFn: getGCSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging gcs describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetGCSFn: getGCSOK, }, - wantOutput: describeGCSOutput, + WantOutput: describeGCSOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestGCSUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging gcs update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging gcs update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateGCSFn: updateGCSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging gcs update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateGCSFn: updateGCSOK, }, - wantOutput: "Updated GCS logging endpoint log (service 123 version 4)", + WantOutput: "Updated GCS logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestGCSDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging gcs delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging gcs delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteGCSFn: deleteGCSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging gcs delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteGCSFn: deleteGCSOK, }, - wantOutput: "Deleted GCS logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted GCS logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/gcs/gcs_test.go b/pkg/commands/service/logging/gcs/gcs_test.go similarity index 99% rename from pkg/commands/logging/gcs/gcs_test.go rename to pkg/commands/service/logging/gcs/gcs_test.go index d9c293677..4fd9394d9 100644 --- a/pkg/commands/logging/gcs/gcs_test.go +++ b/pkg/commands/service/logging/gcs/gcs_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/gcs" + "github.com/fastly/cli/pkg/commands/service/logging/gcs" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/gcs/list.go b/pkg/commands/service/logging/gcs/list.go similarity index 100% rename from pkg/commands/logging/gcs/list.go rename to pkg/commands/service/logging/gcs/list.go diff --git a/pkg/commands/logging/gcs/root.go b/pkg/commands/service/logging/gcs/root.go similarity index 100% rename from pkg/commands/logging/gcs/root.go rename to pkg/commands/service/logging/gcs/root.go diff --git a/pkg/commands/logging/gcs/update.go b/pkg/commands/service/logging/gcs/update.go similarity index 99% rename from pkg/commands/logging/gcs/update.go rename to pkg/commands/service/logging/gcs/update.go index b011613f2..46e96fa5f 100644 --- a/pkg/commands/logging/gcs/update.go +++ b/pkg/commands/service/logging/gcs/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/googlepubsub/create.go b/pkg/commands/service/logging/googlepubsub/create.go similarity index 98% rename from pkg/commands/logging/googlepubsub/create.go rename to pkg/commands/service/logging/googlepubsub/create.go index 86d90a804..05ac792fc 100644 --- a/pkg/commands/logging/googlepubsub/create.go +++ b/pkg/commands/service/logging/googlepubsub/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/googlepubsub/delete.go b/pkg/commands/service/logging/googlepubsub/delete.go similarity index 100% rename from pkg/commands/logging/googlepubsub/delete.go rename to pkg/commands/service/logging/googlepubsub/delete.go diff --git a/pkg/commands/logging/googlepubsub/describe.go b/pkg/commands/service/logging/googlepubsub/describe.go similarity index 100% rename from pkg/commands/logging/googlepubsub/describe.go rename to pkg/commands/service/logging/googlepubsub/describe.go diff --git a/pkg/commands/logging/googlepubsub/doc.go b/pkg/commands/service/logging/googlepubsub/doc.go similarity index 100% rename from pkg/commands/logging/googlepubsub/doc.go rename to pkg/commands/service/logging/googlepubsub/doc.go diff --git a/pkg/commands/logging/googlepubsub/googlepubsub_integration_test.go b/pkg/commands/service/logging/googlepubsub/googlepubsub_integration_test.go similarity index 55% rename from pkg/commands/logging/googlepubsub/googlepubsub_integration_test.go rename to pkg/commands/service/logging/googlepubsub/googlepubsub_integration_test.go index 1456b6fd3..3034709f3 100644 --- a/pkg/commands/logging/googlepubsub/googlepubsub_integration_test.go +++ b/pkg/commands/service/logging/googlepubsub/googlepubsub_integration_test.go @@ -1,274 +1,163 @@ package googlepubsub_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" ) func TestGooglePubSubCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging googlepubsub create --service-id 123 --version 1 --name log --user user@example.com --secret-key secret --project-id project --topic topic --account-name=me@fastly.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user user@example.com --secret-key secret --project-id project --topic topic --account-name=me@fastly.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreatePubsubFn: createGooglePubSubOK, }, - wantOutput: "Created Google Cloud Pub/Sub logging endpoint log (service 123 version 4)", + WantOutput: "Created Google Cloud Pub/Sub logging endpoint log (service 123 version 4)", }, { - args: args("logging googlepubsub create --service-id 123 --version 1 --name log --user user@example.com --secret-key secret --project-id project --topic topic --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user user@example.com --secret-key secret --project-id project --topic topic --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreatePubsubFn: createGooglePubSubError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestGooglePubSubList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging googlepubsub list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListPubsubsFn: listGooglePubSubsOK, - }, - wantOutput: listGooglePubSubsShortOutput, - }, - { - args: args("logging googlepubsub list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListPubsubsFn: listGooglePubSubsOK, - }, - wantOutput: listGooglePubSubsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging googlepubsub list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPubsubsFn: listGooglePubSubsOK, }, - wantOutput: listGooglePubSubsVerboseOutput, + WantOutput: listGooglePubSubsShortOutput, }, { - args: args("logging googlepubsub --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPubsubsFn: listGooglePubSubsOK, }, - wantOutput: listGooglePubSubsVerboseOutput, + WantOutput: listGooglePubSubsVerboseOutput, }, { - args: args("logging -v googlepubsub list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPubsubsFn: listGooglePubSubsOK, }, - wantOutput: listGooglePubSubsVerboseOutput, + WantOutput: listGooglePubSubsVerboseOutput, }, { - args: args("logging googlepubsub list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPubsubsFn: listGooglePubSubsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestGooglePubSubDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging googlepubsub describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging googlepubsub describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetPubsubFn: getGooglePubSubError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging googlepubsub describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetPubsubFn: getGooglePubSubOK, }, - wantOutput: describeGooglePubSubOutput, + WantOutput: describeGooglePubSubOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestGooglePubSubUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging googlepubsub update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging googlepubsub update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdatePubsubFn: updateGooglePubSubError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging googlepubsub update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdatePubsubFn: updateGooglePubSubOK, }, - wantOutput: "Updated Google Cloud Pub/Sub logging endpoint log (service 123 version 4)", + WantOutput: "Updated Google Cloud Pub/Sub logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestGooglePubSubDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging googlepubsub delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging googlepubsub delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeletePubsubFn: deleteGooglePubSubError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging googlepubsub delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeletePubsubFn: deleteGooglePubSubOK, }, - wantOutput: "Deleted Google Cloud Pub/Sub logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Google Cloud Pub/Sub logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/googlepubsub/googlepubsub_test.go b/pkg/commands/service/logging/googlepubsub/googlepubsub_test.go similarity index 99% rename from pkg/commands/logging/googlepubsub/googlepubsub_test.go rename to pkg/commands/service/logging/googlepubsub/googlepubsub_test.go index 8cba96125..3a5077e29 100644 --- a/pkg/commands/logging/googlepubsub/googlepubsub_test.go +++ b/pkg/commands/service/logging/googlepubsub/googlepubsub_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/googlepubsub" + "github.com/fastly/cli/pkg/commands/service/logging/googlepubsub" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/googlepubsub/list.go b/pkg/commands/service/logging/googlepubsub/list.go similarity index 100% rename from pkg/commands/logging/googlepubsub/list.go rename to pkg/commands/service/logging/googlepubsub/list.go diff --git a/pkg/commands/logging/googlepubsub/root.go b/pkg/commands/service/logging/googlepubsub/root.go similarity index 100% rename from pkg/commands/logging/googlepubsub/root.go rename to pkg/commands/service/logging/googlepubsub/root.go diff --git a/pkg/commands/logging/googlepubsub/update.go b/pkg/commands/service/logging/googlepubsub/update.go similarity index 98% rename from pkg/commands/logging/googlepubsub/update.go rename to pkg/commands/service/logging/googlepubsub/update.go index f045fd4a0..02a0a8fcb 100644 --- a/pkg/commands/logging/googlepubsub/update.go +++ b/pkg/commands/service/logging/googlepubsub/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/grafanacloudlogs/create.go b/pkg/commands/service/logging/grafanacloudlogs/create.go similarity index 98% rename from pkg/commands/logging/grafanacloudlogs/create.go rename to pkg/commands/service/logging/grafanacloudlogs/create.go index 64065ecbc..e52989574 100644 --- a/pkg/commands/logging/grafanacloudlogs/create.go +++ b/pkg/commands/service/logging/grafanacloudlogs/create.go @@ -7,7 +7,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/grafanacloudlogs/delete.go b/pkg/commands/service/logging/grafanacloudlogs/delete.go similarity index 100% rename from pkg/commands/logging/grafanacloudlogs/delete.go rename to pkg/commands/service/logging/grafanacloudlogs/delete.go diff --git a/pkg/commands/logging/grafanacloudlogs/describe.go b/pkg/commands/service/logging/grafanacloudlogs/describe.go similarity index 100% rename from pkg/commands/logging/grafanacloudlogs/describe.go rename to pkg/commands/service/logging/grafanacloudlogs/describe.go diff --git a/pkg/commands/logging/grafanacloudlogs/doc.go b/pkg/commands/service/logging/grafanacloudlogs/doc.go similarity index 100% rename from pkg/commands/logging/grafanacloudlogs/doc.go rename to pkg/commands/service/logging/grafanacloudlogs/doc.go diff --git a/pkg/commands/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go b/pkg/commands/service/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go similarity index 55% rename from pkg/commands/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go rename to pkg/commands/service/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go index d044e1407..c014a1fd0 100644 --- a/pkg/commands/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go +++ b/pkg/commands/service/logging/grafanacloudlogs/grafanacloud_logs_integration_test.go @@ -1,273 +1,162 @@ package grafanacloudlogs_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" + "github.com/fastly/go-fastly/v12/fastly" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" - "github.com/fastly/go-fastly/v12/fastly" ) func TestGrafanaCloudLogsCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging grafanacloudlogs create --service-id 123 --version 1 --name log --user 123456 --url https://test123.grafana.net --auth-token testtoken --index `{\"label\": \"value\" }` --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --user 123456 --url https://test123.grafana.net --auth-token testtoken --index `{\"label\": \"value\" }` --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateGrafanaCloudLogsFn: createGrafanaCloudLogsOK, }, - wantOutput: "Created Grafana Cloud Logs logging endpoint log (service 123 version 4)", + WantOutput: "Created Grafana Cloud Logs logging endpoint log (service 123 version 4)", }, { - args: args("logging grafanacloudlogs create --service-id 123 --version 1 --name log --url https://test123.grafana.net --auth-token testtoken --index `{\"label\": \"value\" }` --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url https://test123.grafana.net --auth-token testtoken --index `{\"label\": \"value\" }` --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateGrafanaCloudLogsFn: createGrafanaCloudLogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestGrafanaCloudLogsList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging grafanacloudlogs list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListGrafanaCloudLogsFn: listGrafanaCloudLogsOK, - }, - wantOutput: listGrafanaCloudLogsShortOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging grafanacloudlogs list --service-id 123 --version 1 --verbose"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGrafanaCloudLogsFn: listGrafanaCloudLogsOK, }, - wantOutput: listGrafanaCloudLogsVerboseOutput, + WantOutput: listGrafanaCloudLogsShortOutput, }, { - args: args("logging grafanacloudlogs list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGrafanaCloudLogsFn: listGrafanaCloudLogsOK, }, - wantOutput: listGrafanaCloudLogsVerboseOutput, + WantOutput: listGrafanaCloudLogsVerboseOutput, }, { - args: args("logging grafanacloudlogs --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGrafanaCloudLogsFn: listGrafanaCloudLogsOK, }, - wantOutput: listGrafanaCloudLogsVerboseOutput, + WantOutput: listGrafanaCloudLogsVerboseOutput, }, { - args: args("logging -v grafanacloudlogs list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListGrafanaCloudLogsFn: listGrafanaCloudLogsOK, - }, - wantOutput: listGrafanaCloudLogsVerboseOutput, - }, - { - args: args("logging grafanacloudlogs list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListGrafanaCloudLogsFn: listGrafanaCloudLogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestGrafanaCloudLogsDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging grafanacloudlogs describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging grafanacloudlogs describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetGrafanaCloudLogsFn: getGrafanaCloudLogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging grafanacloudlogs describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetGrafanaCloudLogsFn: getGrafanaCloudLogsOK, }, - wantOutput: describeGrafanaCloudLogsOutput, + WantOutput: describeGrafanaCloudLogsOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestGrafanaCloudLogsUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging grafanacloudlogs update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging grafanacloudlogs update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateGrafanaCloudLogsFn: updateGrafanaCloudLogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging grafanacloudlogs update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateGrafanaCloudLogsFn: updateGrafanaCloudLogsOK, }, - wantOutput: "Updated Grafana Cloud Logs logging endpoint log (service 123 version 4)", + WantOutput: "Updated Grafana Cloud Logs logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestGrafanaCloudLogsDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging grafanacloudlogs delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging grafanacloudlogs delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteGrafanaCloudLogsFn: deleteGrafanaCloudLogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging grafanacloudlogs delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteGrafanaCloudLogsFn: deleteGrafanaCloudLogsOK, }, - wantOutput: "Deleted Grafana Cloud Logs logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Grafana Cloud Logs logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/grafanacloudlogs/grafanacloudlogs_test.go b/pkg/commands/service/logging/grafanacloudlogs/grafanacloudlogs_test.go similarity index 99% rename from pkg/commands/logging/grafanacloudlogs/grafanacloudlogs_test.go rename to pkg/commands/service/logging/grafanacloudlogs/grafanacloudlogs_test.go index 3bdef72e2..0e5200624 100644 --- a/pkg/commands/logging/grafanacloudlogs/grafanacloudlogs_test.go +++ b/pkg/commands/service/logging/grafanacloudlogs/grafanacloudlogs_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/grafanacloudlogs" + "github.com/fastly/cli/pkg/commands/service/logging/grafanacloudlogs" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/grafanacloudlogs/list.go b/pkg/commands/service/logging/grafanacloudlogs/list.go similarity index 100% rename from pkg/commands/logging/grafanacloudlogs/list.go rename to pkg/commands/service/logging/grafanacloudlogs/list.go diff --git a/pkg/commands/logging/grafanacloudlogs/root.go b/pkg/commands/service/logging/grafanacloudlogs/root.go similarity index 100% rename from pkg/commands/logging/grafanacloudlogs/root.go rename to pkg/commands/service/logging/grafanacloudlogs/root.go diff --git a/pkg/commands/logging/grafanacloudlogs/update.go b/pkg/commands/service/logging/grafanacloudlogs/update.go similarity index 98% rename from pkg/commands/logging/grafanacloudlogs/update.go rename to pkg/commands/service/logging/grafanacloudlogs/update.go index 8224bdaad..4c6528ed5 100644 --- a/pkg/commands/logging/grafanacloudlogs/update.go +++ b/pkg/commands/service/logging/grafanacloudlogs/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/heroku/create.go b/pkg/commands/service/logging/heroku/create.go similarity index 98% rename from pkg/commands/logging/heroku/create.go rename to pkg/commands/service/logging/heroku/create.go index 9cf8b1608..e63c4c636 100644 --- a/pkg/commands/logging/heroku/create.go +++ b/pkg/commands/service/logging/heroku/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/heroku/delete.go b/pkg/commands/service/logging/heroku/delete.go similarity index 100% rename from pkg/commands/logging/heroku/delete.go rename to pkg/commands/service/logging/heroku/delete.go diff --git a/pkg/commands/logging/heroku/describe.go b/pkg/commands/service/logging/heroku/describe.go similarity index 100% rename from pkg/commands/logging/heroku/describe.go rename to pkg/commands/service/logging/heroku/describe.go diff --git a/pkg/commands/logging/heroku/doc.go b/pkg/commands/service/logging/heroku/doc.go similarity index 100% rename from pkg/commands/logging/heroku/doc.go rename to pkg/commands/service/logging/heroku/doc.go diff --git a/pkg/commands/logging/heroku/heroku_integration_test.go b/pkg/commands/service/logging/heroku/heroku_integration_test.go similarity index 50% rename from pkg/commands/logging/heroku/heroku_integration_test.go rename to pkg/commands/service/logging/heroku/heroku_integration_test.go index 1ef83ba22..33c8f86c2 100644 --- a/pkg/commands/logging/heroku/heroku_integration_test.go +++ b/pkg/commands/service/logging/heroku/heroku_integration_test.go @@ -1,274 +1,163 @@ package heroku_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/heroku" ) func TestHerokuCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging heroku create --service-id 123 --version 1 --name log --auth-token abc --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHerokuFn: createHerokuOK, }, - wantOutput: "Created Heroku logging endpoint log (service 123 version 4)", + WantOutput: "Created Heroku logging endpoint log (service 123 version 4)", }, { - args: args("logging heroku create --service-id 123 --version 1 --name log --auth-token abc --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHerokuFn: createHerokuError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestHerokuList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging heroku list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHerokusFn: listHerokusOK, - }, - wantOutput: listHerokusShortOutput, - }, - { - args: args("logging heroku list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHerokusFn: listHerokusOK, - }, - wantOutput: listHerokusVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging heroku list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHerokusFn: listHerokusOK, }, - wantOutput: listHerokusVerboseOutput, + WantOutput: listHerokusShortOutput, }, { - args: args("logging heroku --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHerokusFn: listHerokusOK, }, - wantOutput: listHerokusVerboseOutput, + WantOutput: listHerokusVerboseOutput, }, { - args: args("logging -v heroku list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHerokusFn: listHerokusOK, }, - wantOutput: listHerokusVerboseOutput, + WantOutput: listHerokusVerboseOutput, }, { - args: args("logging heroku list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHerokusFn: listHerokusError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestHerokuDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging heroku describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging heroku describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHerokuFn: getHerokuError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging heroku describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHerokuFn: getHerokuOK, }, - wantOutput: describeHerokuOutput, + WantOutput: describeHerokuOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestHerokuUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging heroku update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging heroku update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHerokuFn: updateHerokuError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging heroku update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHerokuFn: updateHerokuOK, }, - wantOutput: "Updated Heroku logging endpoint log (service 123 version 4)", + WantOutput: "Updated Heroku logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestHerokuDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging heroku delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging heroku delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHerokuFn: deleteHerokuError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging heroku delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHerokuFn: deleteHerokuOK, }, - wantOutput: "Deleted Heroku logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Heroku logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/heroku/heroku_test.go b/pkg/commands/service/logging/heroku/heroku_test.go similarity index 99% rename from pkg/commands/logging/heroku/heroku_test.go rename to pkg/commands/service/logging/heroku/heroku_test.go index 073980d74..1b2c5c6f7 100644 --- a/pkg/commands/logging/heroku/heroku_test.go +++ b/pkg/commands/service/logging/heroku/heroku_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/heroku" + "github.com/fastly/cli/pkg/commands/service/logging/heroku" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/heroku/list.go b/pkg/commands/service/logging/heroku/list.go similarity index 100% rename from pkg/commands/logging/heroku/list.go rename to pkg/commands/service/logging/heroku/list.go diff --git a/pkg/commands/logging/heroku/root.go b/pkg/commands/service/logging/heroku/root.go similarity index 100% rename from pkg/commands/logging/heroku/root.go rename to pkg/commands/service/logging/heroku/root.go diff --git a/pkg/commands/logging/heroku/update.go b/pkg/commands/service/logging/heroku/update.go similarity index 98% rename from pkg/commands/logging/heroku/update.go rename to pkg/commands/service/logging/heroku/update.go index f7701edbb..0d692a676 100644 --- a/pkg/commands/logging/heroku/update.go +++ b/pkg/commands/service/logging/heroku/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/honeycomb/create.go b/pkg/commands/service/logging/honeycomb/create.go similarity index 98% rename from pkg/commands/logging/honeycomb/create.go rename to pkg/commands/service/logging/honeycomb/create.go index d023f0495..aee394968 100644 --- a/pkg/commands/logging/honeycomb/create.go +++ b/pkg/commands/service/logging/honeycomb/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/honeycomb/delete.go b/pkg/commands/service/logging/honeycomb/delete.go similarity index 100% rename from pkg/commands/logging/honeycomb/delete.go rename to pkg/commands/service/logging/honeycomb/delete.go diff --git a/pkg/commands/logging/honeycomb/describe.go b/pkg/commands/service/logging/honeycomb/describe.go similarity index 100% rename from pkg/commands/logging/honeycomb/describe.go rename to pkg/commands/service/logging/honeycomb/describe.go diff --git a/pkg/commands/logging/honeycomb/doc.go b/pkg/commands/service/logging/honeycomb/doc.go similarity index 100% rename from pkg/commands/logging/honeycomb/doc.go rename to pkg/commands/service/logging/honeycomb/doc.go diff --git a/pkg/commands/logging/honeycomb/honeycomb_integration_test.go b/pkg/commands/service/logging/honeycomb/honeycomb_integration_test.go similarity index 51% rename from pkg/commands/logging/honeycomb/honeycomb_integration_test.go rename to pkg/commands/service/logging/honeycomb/honeycomb_integration_test.go index 5a147b8a4..3ebe3edad 100644 --- a/pkg/commands/logging/honeycomb/honeycomb_integration_test.go +++ b/pkg/commands/service/logging/honeycomb/honeycomb_integration_test.go @@ -1,274 +1,162 @@ package honeycomb_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) func TestHoneycombCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging honeycomb create --service-id 123 --version 1 --name log --auth-token abc --dataset log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --dataset log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHoneycombFn: createHoneycombOK, }, - wantOutput: "Created Honeycomb logging endpoint log (service 123 version 4)", + WantOutput: "Created Honeycomb logging endpoint log (service 123 version 4)", }, { - args: args("logging honeycomb create --service-id 123 --version 1 --name log --auth-token abc --dataset log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --dataset log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHoneycombFn: createHoneycombError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestHoneycombList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging honeycomb list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHoneycombsFn: listHoneycombsOK, - }, - wantOutput: listHoneycombsShortOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging honeycomb list --service-id 123 --version 1 --verbose"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHoneycombsFn: listHoneycombsOK, }, - wantOutput: listHoneycombsVerboseOutput, + WantOutput: listHoneycombsShortOutput, }, { - args: args("logging honeycomb list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHoneycombsFn: listHoneycombsOK, }, - wantOutput: listHoneycombsVerboseOutput, + WantOutput: listHoneycombsVerboseOutput, }, { - args: args("logging honeycomb --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHoneycombsFn: listHoneycombsOK, }, - wantOutput: listHoneycombsVerboseOutput, + WantOutput: listHoneycombsVerboseOutput, }, { - args: args("logging -v honeycomb list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHoneycombsFn: listHoneycombsOK, - }, - wantOutput: listHoneycombsVerboseOutput, - }, - { - args: args("logging honeycomb list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHoneycombsFn: listHoneycombsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestHoneycombDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging honeycomb describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging honeycomb describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHoneycombFn: getHoneycombError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging honeycomb describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHoneycombFn: getHoneycombOK, }, - wantOutput: describeHoneycombOutput, + WantOutput: describeHoneycombOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestHoneycombUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging honeycomb update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging honeycomb update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHoneycombFn: updateHoneycombError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging honeycomb update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHoneycombFn: updateHoneycombOK, }, - wantOutput: "Updated Honeycomb logging endpoint log (service 123 version 4)", + WantOutput: "Updated Honeycomb logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestHoneycombDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging honeycomb delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging honeycomb delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHoneycombFn: deleteHoneycombError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging honeycomb delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHoneycombFn: deleteHoneycombOK, }, - wantOutput: "Deleted Honeycomb logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Honeycomb logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/honeycomb/honeycomb_test.go b/pkg/commands/service/logging/honeycomb/honeycomb_test.go similarity index 99% rename from pkg/commands/logging/honeycomb/honeycomb_test.go rename to pkg/commands/service/logging/honeycomb/honeycomb_test.go index 3cbbe0062..8a9f9c929 100644 --- a/pkg/commands/logging/honeycomb/honeycomb_test.go +++ b/pkg/commands/service/logging/honeycomb/honeycomb_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/honeycomb" + "github.com/fastly/cli/pkg/commands/service/logging/honeycomb" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/honeycomb/list.go b/pkg/commands/service/logging/honeycomb/list.go similarity index 100% rename from pkg/commands/logging/honeycomb/list.go rename to pkg/commands/service/logging/honeycomb/list.go diff --git a/pkg/commands/logging/honeycomb/root.go b/pkg/commands/service/logging/honeycomb/root.go similarity index 100% rename from pkg/commands/logging/honeycomb/root.go rename to pkg/commands/service/logging/honeycomb/root.go diff --git a/pkg/commands/logging/honeycomb/update.go b/pkg/commands/service/logging/honeycomb/update.go similarity index 98% rename from pkg/commands/logging/honeycomb/update.go rename to pkg/commands/service/logging/honeycomb/update.go index b6053a4b6..d119f8823 100644 --- a/pkg/commands/logging/honeycomb/update.go +++ b/pkg/commands/service/logging/honeycomb/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/https/create.go b/pkg/commands/service/logging/https/create.go similarity index 99% rename from pkg/commands/logging/https/create.go rename to pkg/commands/service/logging/https/create.go index 878f92838..72dff43e5 100644 --- a/pkg/commands/logging/https/create.go +++ b/pkg/commands/service/logging/https/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/https/delete.go b/pkg/commands/service/logging/https/delete.go similarity index 100% rename from pkg/commands/logging/https/delete.go rename to pkg/commands/service/logging/https/delete.go diff --git a/pkg/commands/logging/https/describe.go b/pkg/commands/service/logging/https/describe.go similarity index 100% rename from pkg/commands/logging/https/describe.go rename to pkg/commands/service/logging/https/describe.go diff --git a/pkg/commands/logging/https/doc.go b/pkg/commands/service/logging/https/doc.go similarity index 100% rename from pkg/commands/logging/https/doc.go rename to pkg/commands/service/logging/https/doc.go diff --git a/pkg/commands/logging/https/https_integration_test.go b/pkg/commands/service/logging/https/https_integration_test.go similarity index 64% rename from pkg/commands/logging/https/https_integration_test.go rename to pkg/commands/service/logging/https/https_integration_test.go index 2a499a83c..59c769058 100644 --- a/pkg/commands/logging/https/https_integration_test.go +++ b/pkg/commands/service/logging/https/https_integration_test.go @@ -1,283 +1,172 @@ package https_test import ( - "bytes" "context" "errors" - "io" "net/http" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/https" ) func TestHTTPSCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging https create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHTTPSFn: createHTTPSOK, }, - wantOutput: "Created HTTPS logging endpoint log (service 123 version 4)", + WantOutput: "Created HTTPS logging endpoint log (service 123 version 4)", }, { - args: args("logging https create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateHTTPSFn: createHTTPSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging https create --service-id 123 --version 1 --name log --url example.com --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestHTTPSList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging https list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHTTPSFn: listHTTPSsOK, - }, - wantOutput: listHTTPSsShortOutput, - }, - { - args: args("logging https list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListHTTPSFn: listHTTPSsOK, - }, - wantOutput: listHTTPSsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging https list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHTTPSFn: listHTTPSsOK, }, - wantOutput: listHTTPSsVerboseOutput, + WantOutput: listHTTPSsShortOutput, }, { - args: args("logging https --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHTTPSFn: listHTTPSsOK, }, - wantOutput: listHTTPSsVerboseOutput, + WantOutput: listHTTPSsVerboseOutput, }, { - args: args("logging -v https list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHTTPSFn: listHTTPSsOK, }, - wantOutput: listHTTPSsVerboseOutput, + WantOutput: listHTTPSsVerboseOutput, }, { - args: args("logging https list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListHTTPSFn: listHTTPSsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestHTTPSDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging https describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging https describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHTTPSFn: getHTTPSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging https describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetHTTPSFn: getHTTPSOK, }, - wantOutput: describeHTTPSOutput, + WantOutput: describeHTTPSOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestHTTPSUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging https update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging https update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHTTPSFn: updateHTTPSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging https update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateHTTPSFn: updateHTTPSOK, }, - wantOutput: "Updated HTTPS logging endpoint log (service 123 version 4)", + WantOutput: "Updated HTTPS logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestHTTPSDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging https delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging https delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHTTPSFn: deleteHTTPSError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging https delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteHTTPSFn: deleteHTTPSOK, }, - wantOutput: "Deleted HTTPS logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted HTTPS logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/https/https_test.go b/pkg/commands/service/logging/https/https_test.go similarity index 99% rename from pkg/commands/logging/https/https_test.go rename to pkg/commands/service/logging/https/https_test.go index c5b0eaae9..9e2102aa8 100644 --- a/pkg/commands/logging/https/https_test.go +++ b/pkg/commands/service/logging/https/https_test.go @@ -8,7 +8,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/https" + "github.com/fastly/cli/pkg/commands/service/logging/https" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/https/list.go b/pkg/commands/service/logging/https/list.go similarity index 100% rename from pkg/commands/logging/https/list.go rename to pkg/commands/service/logging/https/list.go diff --git a/pkg/commands/logging/https/root.go b/pkg/commands/service/logging/https/root.go similarity index 100% rename from pkg/commands/logging/https/root.go rename to pkg/commands/service/logging/https/root.go diff --git a/pkg/commands/logging/https/update.go b/pkg/commands/service/logging/https/update.go similarity index 99% rename from pkg/commands/logging/https/update.go rename to pkg/commands/service/logging/https/update.go index 0ed1811f0..c73be686d 100644 --- a/pkg/commands/logging/https/update.go +++ b/pkg/commands/service/logging/https/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/kafka/create.go b/pkg/commands/service/logging/kafka/create.go similarity index 99% rename from pkg/commands/logging/kafka/create.go rename to pkg/commands/service/logging/kafka/create.go index 444cabff3..ead10ccfd 100644 --- a/pkg/commands/logging/kafka/create.go +++ b/pkg/commands/service/logging/kafka/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/kafka/delete.go b/pkg/commands/service/logging/kafka/delete.go similarity index 100% rename from pkg/commands/logging/kafka/delete.go rename to pkg/commands/service/logging/kafka/delete.go diff --git a/pkg/commands/logging/kafka/describe.go b/pkg/commands/service/logging/kafka/describe.go similarity index 100% rename from pkg/commands/logging/kafka/describe.go rename to pkg/commands/service/logging/kafka/describe.go diff --git a/pkg/commands/logging/kafka/doc.go b/pkg/commands/service/logging/kafka/doc.go similarity index 100% rename from pkg/commands/logging/kafka/doc.go rename to pkg/commands/service/logging/kafka/doc.go diff --git a/pkg/commands/logging/kafka/kafka_integration_test.go b/pkg/commands/service/logging/kafka/kafka_integration_test.go similarity index 65% rename from pkg/commands/logging/kafka/kafka_integration_test.go rename to pkg/commands/service/logging/kafka/kafka_integration_test.go index 303913943..437f29259 100644 --- a/pkg/commands/logging/kafka/kafka_integration_test.go +++ b/pkg/commands/service/logging/kafka/kafka_integration_test.go @@ -1,283 +1,172 @@ package kafka_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/kafka" ) func TestKafkaCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kafka create --service-id 123 --version 1 --name log --topic logs --brokers 127.0.0.1127.0.0.2 --parse-log-keyvals --max-batch-size 1024 --use-sasl --auth-method plain --username user --password password --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --topic logs --brokers 127.0.0.1127.0.0.2 --parse-log-keyvals --max-batch-size 1024 --use-sasl --auth-method plain --username user --password password --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKafkaFn: createKafkaOK, }, - wantOutput: "Created Kafka logging endpoint log (service 123 version 4)", + WantOutput: "Created Kafka logging endpoint log (service 123 version 4)", }, { - args: args("logging kafka create --service-id 123 --version 1 --name log --topic logs --brokers 127.0.0.1127.0.0.2 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --topic logs --brokers 127.0.0.1127.0.0.2 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKafkaFn: createKafkaError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestKafkaList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging kafka list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListKafkasFn: listKafkasOK, - }, - wantOutput: listKafkasShortOutput, - }, - { - args: args("logging kafka list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListKafkasFn: listKafkasOK, - }, - wantOutput: listKafkasVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging kafka list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKafkasFn: listKafkasOK, }, - wantOutput: listKafkasVerboseOutput, + WantOutput: listKafkasShortOutput, }, { - args: args("logging kafka --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKafkasFn: listKafkasOK, }, - wantOutput: listKafkasVerboseOutput, + WantOutput: listKafkasVerboseOutput, }, { - args: args("logging -v kafka list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKafkasFn: listKafkasOK, }, - wantOutput: listKafkasVerboseOutput, + WantOutput: listKafkasVerboseOutput, }, { - args: args("logging kafka list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKafkasFn: listKafkasError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestKafkaDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kafka describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kafka describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetKafkaFn: getKafkaError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kafka describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetKafkaFn: getKafkaOK, }, - wantOutput: describeKafkaOutput, + WantOutput: describeKafkaOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestKafkaUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kafka update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kafka update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateKafkaFn: updateKafkaError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kafka update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateKafkaFn: updateKafkaOK, }, - wantOutput: "Updated Kafka logging endpoint log (service 123 version 4)", + WantOutput: "Updated Kafka logging endpoint log (service 123 version 4)", }, { - args: args("logging kafka update --service-id 123 --version 1 --name logs --new-name log --parse-log-keyvals --max-batch-size 1024 --use-sasl --auth-method plain --username user --password password --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --parse-log-keyvals --max-batch-size 1024 --use-sasl --auth-method plain --username user --password password --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateKafkaFn: updateKafkaSASL, }, - wantOutput: "Updated Kafka logging endpoint log (service 123 version 4)", + WantOutput: "Updated Kafka logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestKafkaDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kafka delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kafka delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteKafkaFn: deleteKafkaError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kafka delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteKafkaFn: deleteKafkaOK, }, - wantOutput: "Deleted Kafka logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Kafka logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/kafka/kafka_test.go b/pkg/commands/service/logging/kafka/kafka_test.go similarity index 99% rename from pkg/commands/logging/kafka/kafka_test.go rename to pkg/commands/service/logging/kafka/kafka_test.go index 744274f03..935556a64 100644 --- a/pkg/commands/logging/kafka/kafka_test.go +++ b/pkg/commands/service/logging/kafka/kafka_test.go @@ -8,7 +8,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/kafka" + "github.com/fastly/cli/pkg/commands/service/logging/kafka" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/kafka/list.go b/pkg/commands/service/logging/kafka/list.go similarity index 100% rename from pkg/commands/logging/kafka/list.go rename to pkg/commands/service/logging/kafka/list.go diff --git a/pkg/commands/logging/kafka/root.go b/pkg/commands/service/logging/kafka/root.go similarity index 100% rename from pkg/commands/logging/kafka/root.go rename to pkg/commands/service/logging/kafka/root.go diff --git a/pkg/commands/logging/kafka/update.go b/pkg/commands/service/logging/kafka/update.go similarity index 99% rename from pkg/commands/logging/kafka/update.go rename to pkg/commands/service/logging/kafka/update.go index 3e67435d0..12891505e 100644 --- a/pkg/commands/logging/kafka/update.go +++ b/pkg/commands/service/logging/kafka/update.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/kinesis/create.go b/pkg/commands/service/logging/kinesis/create.go similarity index 99% rename from pkg/commands/logging/kinesis/create.go rename to pkg/commands/service/logging/kinesis/create.go index 73ec69e35..d518b40e5 100644 --- a/pkg/commands/logging/kinesis/create.go +++ b/pkg/commands/service/logging/kinesis/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/kinesis/delete.go b/pkg/commands/service/logging/kinesis/delete.go similarity index 100% rename from pkg/commands/logging/kinesis/delete.go rename to pkg/commands/service/logging/kinesis/delete.go diff --git a/pkg/commands/logging/kinesis/describe.go b/pkg/commands/service/logging/kinesis/describe.go similarity index 100% rename from pkg/commands/logging/kinesis/describe.go rename to pkg/commands/service/logging/kinesis/describe.go diff --git a/pkg/commands/logging/kinesis/doc.go b/pkg/commands/service/logging/kinesis/doc.go similarity index 100% rename from pkg/commands/logging/kinesis/doc.go rename to pkg/commands/service/logging/kinesis/doc.go diff --git a/pkg/commands/logging/kinesis/kinesis_integration_test.go b/pkg/commands/service/logging/kinesis/kinesis_integration_test.go similarity index 51% rename from pkg/commands/logging/kinesis/kinesis_integration_test.go rename to pkg/commands/service/logging/kinesis/kinesis_integration_test.go index 78c3ddf60..662754a8c 100644 --- a/pkg/commands/logging/kinesis/kinesis_integration_test.go +++ b/pkg/commands/service/logging/kinesis/kinesis_integration_test.go @@ -1,316 +1,205 @@ package kinesis_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/kinesis" ) func TestKinesisCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kinesis create --service-id 123 --version 1 --name log --stream-name log --region us-east-1 --secret-key bar --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --stream-name log --region us-east-1 --secret-key bar --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log --stream-name log --region us-east-1 --access-key foo --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --stream-name log --region us-east-1 --access-key foo --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log --stream-name log --region us-east-1 --access-key foo --secret-key bar --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --stream-name log --region us-east-1 --access-key foo --secret-key bar --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log --stream-name log --access-key foo --secret-key bar --region us-east-1 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --stream-name log --access-key foo --secret-key bar --region us-east-1 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKinesisFn: createKinesisOK, }, - wantOutput: "Created Kinesis logging endpoint log (service 123 version 4)", + WantOutput: "Created Kinesis logging endpoint log (service 123 version 4)", }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log --stream-name log --access-key foo --secret-key bar --region us-east-1 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --stream-name log --access-key foo --secret-key bar --region us-east-1 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKinesisFn: createKinesisError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log2 --stream-name log --region us-east-1 --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log2 --stream-name log --region us-east-1 --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKinesisFn: createKinesisOK, }, - wantOutput: "Created Kinesis logging endpoint log2 (service 123 version 4)", + WantOutput: "Created Kinesis logging endpoint log2 (service 123 version 4)", }, { - args: args("logging kinesis create --service-id 123 --version 1 --name log2 --stream-name log --region us-east-1 --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log2 --stream-name log --region us-east-1 --iam-role arn:aws:iam::123456789012:role/KinesisAccess --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateKinesisFn: createKinesisError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestKinesisList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging kinesis list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListKinesisFn: listKinesesOK, - }, - wantOutput: listKinesesShortOutput, - }, - { - args: args("logging kinesis list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListKinesisFn: listKinesesOK, - }, - wantOutput: listKinesesVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging kinesis list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKinesisFn: listKinesesOK, }, - wantOutput: listKinesesVerboseOutput, + WantOutput: listKinesesShortOutput, }, { - args: args("logging kinesis --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKinesisFn: listKinesesOK, }, - wantOutput: listKinesesVerboseOutput, + WantOutput: listKinesesVerboseOutput, }, { - args: args("logging -v kinesis list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKinesisFn: listKinesesOK, }, - wantOutput: listKinesesVerboseOutput, + WantOutput: listKinesesVerboseOutput, }, { - args: args("logging kinesis list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListKinesisFn: listKinesesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestKinesisDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kinesis describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kinesis describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetKinesisFn: getKinesisError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kinesis describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetKinesisFn: getKinesisOK, }, - wantOutput: describeKinesisOutput, + WantOutput: describeKinesisOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestKinesisUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kinesis update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kinesis update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateKinesisFn: updateKinesisError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kinesis update --service-id 123 --version 1 --name logs --new-name log --region us-west-1 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --region us-west-1 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateKinesisFn: updateKinesisOK, }, - wantOutput: "Updated Kinesis logging endpoint log (service 123 version 4)", + WantOutput: "Updated Kinesis logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestKinesisDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging kinesis delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging kinesis delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteKinesisFn: deleteKinesisError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging kinesis delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteKinesisFn: deleteKinesisOK, }, - wantOutput: "Deleted Kinesis logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Kinesis logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/kinesis/kinesis_test.go b/pkg/commands/service/logging/kinesis/kinesis_test.go similarity index 99% rename from pkg/commands/logging/kinesis/kinesis_test.go rename to pkg/commands/service/logging/kinesis/kinesis_test.go index f6feed2ab..f2a140de7 100644 --- a/pkg/commands/logging/kinesis/kinesis_test.go +++ b/pkg/commands/service/logging/kinesis/kinesis_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/kinesis" + "github.com/fastly/cli/pkg/commands/service/logging/kinesis" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/kinesis/list.go b/pkg/commands/service/logging/kinesis/list.go similarity index 100% rename from pkg/commands/logging/kinesis/list.go rename to pkg/commands/service/logging/kinesis/list.go diff --git a/pkg/commands/logging/kinesis/root.go b/pkg/commands/service/logging/kinesis/root.go similarity index 100% rename from pkg/commands/logging/kinesis/root.go rename to pkg/commands/service/logging/kinesis/root.go diff --git a/pkg/commands/logging/kinesis/update.go b/pkg/commands/service/logging/kinesis/update.go similarity index 98% rename from pkg/commands/logging/kinesis/update.go rename to pkg/commands/service/logging/kinesis/update.go index 7508d3b82..4e90e89d1 100644 --- a/pkg/commands/logging/kinesis/update.go +++ b/pkg/commands/service/logging/kinesis/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/logflags/doc.go b/pkg/commands/service/logging/logflags/doc.go similarity index 100% rename from pkg/commands/logging/logflags/doc.go rename to pkg/commands/service/logging/logflags/doc.go diff --git a/pkg/commands/logging/logflags/flags.go b/pkg/commands/service/logging/logflags/flags.go similarity index 100% rename from pkg/commands/logging/logflags/flags.go rename to pkg/commands/service/logging/logflags/flags.go diff --git a/pkg/commands/logging/loggly/create.go b/pkg/commands/service/logging/loggly/create.go similarity index 98% rename from pkg/commands/logging/loggly/create.go rename to pkg/commands/service/logging/loggly/create.go index 979980206..e47d40f9c 100644 --- a/pkg/commands/logging/loggly/create.go +++ b/pkg/commands/service/logging/loggly/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/loggly/delete.go b/pkg/commands/service/logging/loggly/delete.go similarity index 100% rename from pkg/commands/logging/loggly/delete.go rename to pkg/commands/service/logging/loggly/delete.go diff --git a/pkg/commands/logging/loggly/describe.go b/pkg/commands/service/logging/loggly/describe.go similarity index 100% rename from pkg/commands/logging/loggly/describe.go rename to pkg/commands/service/logging/loggly/describe.go diff --git a/pkg/commands/logging/loggly/doc.go b/pkg/commands/service/logging/loggly/doc.go similarity index 100% rename from pkg/commands/logging/loggly/doc.go rename to pkg/commands/service/logging/loggly/doc.go diff --git a/pkg/commands/logging/loggly/list.go b/pkg/commands/service/logging/loggly/list.go similarity index 100% rename from pkg/commands/logging/loggly/list.go rename to pkg/commands/service/logging/loggly/list.go diff --git a/pkg/commands/service/logging/loggly/loggly_integration_test.go b/pkg/commands/service/logging/loggly/loggly_integration_test.go new file mode 100644 index 000000000..d75a68787 --- /dev/null +++ b/pkg/commands/service/logging/loggly/loggly_integration_test.go @@ -0,0 +1,300 @@ +package loggly_test + +import ( + "context" + "errors" + "strings" + "testing" + + "github.com/fastly/go-fastly/v12/fastly" + + "github.com/fastly/cli/pkg/mock" + "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/loggly" +) + +func TestLogglyCreate(t *testing.T) { + scenarios := []testutil.CLIScenario{ + { + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + CreateLogglyFn: createLogglyOK, + }, + WantOutput: "Created Loggly logging endpoint log (service 123 version 4)", + }, + { + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + CreateLogglyFn: createLogglyError, + }, + WantError: errTest.Error(), + }, + } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) +} + +func TestLogglyList(t *testing.T) { + scenarios := []testutil.CLIScenario{ + { + Args: "--service-id 123 --version 1", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + ListLogglyFn: listLogglysOK, + }, + WantOutput: listLogglysShortOutput, + }, + { + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + ListLogglyFn: listLogglysOK, + }, + WantOutput: listLogglysVerboseOutput, + }, + { + Args: "--service-id 123 --version 1 -v", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + ListLogglyFn: listLogglysOK, + }, + WantOutput: listLogglysVerboseOutput, + }, + { + Args: "--service-id 123 --version 1", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + ListLogglyFn: listLogglysError, + }, + WantError: errTest.Error(), + }, + } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) +} + +func TestLogglyDescribe(t *testing.T) { + scenarios := []testutil.CLIScenario{ + { + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", + }, + { + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + GetLogglyFn: getLogglyError, + }, + WantError: errTest.Error(), + }, + { + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + GetLogglyFn: getLogglyOK, + }, + WantOutput: describeLogglyOutput, + }, + } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) +} + +func TestLogglyUpdate(t *testing.T) { + scenarios := []testutil.CLIScenario{ + { + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", + }, + { + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + UpdateLogglyFn: updateLogglyError, + }, + WantError: errTest.Error(), + }, + { + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + UpdateLogglyFn: updateLogglyOK, + }, + WantOutput: "Updated Loggly logging endpoint log (service 123 version 4)", + }, + } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) +} + +func TestLogglyDelete(t *testing.T) { + scenarios := []testutil.CLIScenario{ + { + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", + }, + { + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + DeleteLogglyFn: deleteLogglyError, + }, + WantError: errTest.Error(), + }, + { + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ + ListVersionsFn: testutil.ListVersions, + CloneVersionFn: testutil.CloneVersionResult(4), + DeleteLogglyFn: deleteLogglyOK, + }, + WantOutput: "Deleted Loggly logging endpoint logs (service 123 version 4)", + }, + } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) +} + +var errTest = errors.New("fixture error") + +func createLogglyOK(_ context.Context, i *fastly.CreateLogglyInput) (*fastly.Loggly, error) { + s := fastly.Loggly{ + ServiceID: fastly.ToPointer(i.ServiceID), + ServiceVersion: fastly.ToPointer(i.ServiceVersion), + } + + if i.Name != nil { + s.Name = i.Name + } + + return &s, nil +} + +func createLogglyError(_ context.Context, _ *fastly.CreateLogglyInput) (*fastly.Loggly, error) { + return nil, errTest +} + +func listLogglysOK(_ context.Context, i *fastly.ListLogglyInput) ([]*fastly.Loggly, error) { + return []*fastly.Loggly{ + { + ServiceID: fastly.ToPointer(i.ServiceID), + ServiceVersion: fastly.ToPointer(i.ServiceVersion), + Name: fastly.ToPointer("logs"), + Token: fastly.ToPointer("abc"), + Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), + FormatVersion: fastly.ToPointer(2), + ResponseCondition: fastly.ToPointer("Prevent default logging"), + Placement: fastly.ToPointer("none"), + ProcessingRegion: fastly.ToPointer("us"), + }, + { + ServiceID: fastly.ToPointer(i.ServiceID), + ServiceVersion: fastly.ToPointer(i.ServiceVersion), + Name: fastly.ToPointer("analytics"), + Token: fastly.ToPointer("abc"), + Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), + FormatVersion: fastly.ToPointer(2), + ResponseCondition: fastly.ToPointer("Prevent default logging"), + Placement: fastly.ToPointer("none"), + ProcessingRegion: fastly.ToPointer("us"), + }, + }, nil +} + +func listLogglysError(_ context.Context, _ *fastly.ListLogglyInput) ([]*fastly.Loggly, error) { + return nil, errTest +} + +var listLogglysShortOutput = strings.TrimSpace(` +SERVICE VERSION NAME +123 1 logs +123 1 analytics +`) + "\n" + +var listLogglysVerboseOutput = strings.TrimSpace(` +Fastly API endpoint: https://api.fastly.com +Fastly API token provided via config file (profile: user) + +Service ID (via --service-id): 123 + +Version: 1 + Loggly 1/2 + Service ID: 123 + Version: 1 + Name: logs + Token: abc + Format: %h %l %u %t "%r" %>s %b + Format version: 2 + Response condition: Prevent default logging + Placement: none + Processing region: us + Loggly 2/2 + Service ID: 123 + Version: 1 + Name: analytics + Token: abc + Format: %h %l %u %t "%r" %>s %b + Format version: 2 + Response condition: Prevent default logging + Placement: none + Processing region: us +`) + "\n\n" + +func getLogglyOK(_ context.Context, i *fastly.GetLogglyInput) (*fastly.Loggly, error) { + return &fastly.Loggly{ + ServiceID: fastly.ToPointer(i.ServiceID), + ServiceVersion: fastly.ToPointer(i.ServiceVersion), + Name: fastly.ToPointer("logs"), + Token: fastly.ToPointer("abc"), + Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), + FormatVersion: fastly.ToPointer(2), + ResponseCondition: fastly.ToPointer("Prevent default logging"), + Placement: fastly.ToPointer("none"), + ProcessingRegion: fastly.ToPointer("us"), + }, nil +} + +func getLogglyError(_ context.Context, _ *fastly.GetLogglyInput) (*fastly.Loggly, error) { + return nil, errTest +} + +var describeLogglyOutput = "\n" + strings.TrimSpace(` +Format: %h %l %u %t "%r" %>s %b +Format version: 2 +Name: logs +Placement: none +Processing region: us +Response condition: Prevent default logging +Service ID: 123 +Token: abc +Version: 1 +`) + "\n" + +func updateLogglyOK(_ context.Context, i *fastly.UpdateLogglyInput) (*fastly.Loggly, error) { + return &fastly.Loggly{ + ServiceID: fastly.ToPointer(i.ServiceID), + ServiceVersion: fastly.ToPointer(i.ServiceVersion), + Name: fastly.ToPointer("log"), + Token: fastly.ToPointer("abc"), + Format: fastly.ToPointer(`%h %l %u %t "%r" %>s %b`), + FormatVersion: fastly.ToPointer(2), + ResponseCondition: fastly.ToPointer("Prevent default logging"), + }, nil +} + +func updateLogglyError(_ context.Context, _ *fastly.UpdateLogglyInput) (*fastly.Loggly, error) { + return nil, errTest +} + +func deleteLogglyOK(_ context.Context, _ *fastly.DeleteLogglyInput) error { + return nil +} + +func deleteLogglyError(_ context.Context, _ *fastly.DeleteLogglyInput) error { + return errTest +} diff --git a/pkg/commands/logging/loggly/loggly_test.go b/pkg/commands/service/logging/loggly/loggly_test.go similarity index 99% rename from pkg/commands/logging/loggly/loggly_test.go rename to pkg/commands/service/logging/loggly/loggly_test.go index ca23114b9..5eb8e724e 100644 --- a/pkg/commands/logging/loggly/loggly_test.go +++ b/pkg/commands/service/logging/loggly/loggly_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/loggly" + "github.com/fastly/cli/pkg/commands/service/logging/loggly" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/loggly/root.go b/pkg/commands/service/logging/loggly/root.go similarity index 100% rename from pkg/commands/logging/loggly/root.go rename to pkg/commands/service/logging/loggly/root.go diff --git a/pkg/commands/logging/loggly/update.go b/pkg/commands/service/logging/loggly/update.go similarity index 98% rename from pkg/commands/logging/loggly/update.go rename to pkg/commands/service/logging/loggly/update.go index d361eacc3..9e7264e9f 100644 --- a/pkg/commands/logging/loggly/update.go +++ b/pkg/commands/service/logging/loggly/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/logshuttle/create.go b/pkg/commands/service/logging/logshuttle/create.go similarity index 98% rename from pkg/commands/logging/logshuttle/create.go rename to pkg/commands/service/logging/logshuttle/create.go index 215b7bd90..9f5342763 100644 --- a/pkg/commands/logging/logshuttle/create.go +++ b/pkg/commands/service/logging/logshuttle/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/logshuttle/delete.go b/pkg/commands/service/logging/logshuttle/delete.go similarity index 100% rename from pkg/commands/logging/logshuttle/delete.go rename to pkg/commands/service/logging/logshuttle/delete.go diff --git a/pkg/commands/logging/logshuttle/describe.go b/pkg/commands/service/logging/logshuttle/describe.go similarity index 100% rename from pkg/commands/logging/logshuttle/describe.go rename to pkg/commands/service/logging/logshuttle/describe.go diff --git a/pkg/commands/logging/logshuttle/doc.go b/pkg/commands/service/logging/logshuttle/doc.go similarity index 100% rename from pkg/commands/logging/logshuttle/doc.go rename to pkg/commands/service/logging/logshuttle/doc.go diff --git a/pkg/commands/logging/logshuttle/list.go b/pkg/commands/service/logging/logshuttle/list.go similarity index 100% rename from pkg/commands/logging/logshuttle/list.go rename to pkg/commands/service/logging/logshuttle/list.go diff --git a/pkg/commands/logging/logshuttle/logshuttle_integration_test.go b/pkg/commands/service/logging/logshuttle/logshuttle_integration_test.go similarity index 51% rename from pkg/commands/logging/logshuttle/logshuttle_integration_test.go rename to pkg/commands/service/logging/logshuttle/logshuttle_integration_test.go index 90d191ca5..fc7b717f8 100644 --- a/pkg/commands/logging/logshuttle/logshuttle_integration_test.go +++ b/pkg/commands/service/logging/logshuttle/logshuttle_integration_test.go @@ -1,274 +1,163 @@ package logshuttle_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" ) func TestLogshuttleCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging logshuttle create --service-id 123 --version 1 --name log --url example.com --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateLogshuttleFn: createLogshuttleOK, }, - wantOutput: "Created Logshuttle logging endpoint log (service 123 version 4)", + WantOutput: "Created Logshuttle logging endpoint log (service 123 version 4)", }, { - args: args("logging logshuttle create --service-id 123 --version 1 --name log --url example.com --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateLogshuttleFn: createLogshuttleError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestLogshuttleList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging logshuttle list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogshuttlesFn: listLogshuttlesOK, - }, - wantOutput: listLogshuttlesShortOutput, - }, - { - args: args("logging logshuttle list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListLogshuttlesFn: listLogshuttlesOK, - }, - wantOutput: listLogshuttlesVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging logshuttle list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListLogshuttlesFn: listLogshuttlesOK, }, - wantOutput: listLogshuttlesVerboseOutput, + WantOutput: listLogshuttlesShortOutput, }, { - args: args("logging logshuttle --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListLogshuttlesFn: listLogshuttlesOK, }, - wantOutput: listLogshuttlesVerboseOutput, + WantOutput: listLogshuttlesVerboseOutput, }, { - args: args("logging -v logshuttle list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListLogshuttlesFn: listLogshuttlesOK, }, - wantOutput: listLogshuttlesVerboseOutput, + WantOutput: listLogshuttlesVerboseOutput, }, { - args: args("logging logshuttle list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListLogshuttlesFn: listLogshuttlesError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestLogshuttleDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging logshuttle describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging logshuttle describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetLogshuttleFn: getLogshuttleError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging logshuttle describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetLogshuttleFn: getLogshuttleOK, }, - wantOutput: describeLogshuttleOutput, + WantOutput: describeLogshuttleOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestLogshuttleUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging logshuttle update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging logshuttle update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateLogshuttleFn: updateLogshuttleError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging logshuttle update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateLogshuttleFn: updateLogshuttleOK, }, - wantOutput: "Updated Logshuttle logging endpoint log (service 123 version 4)", + WantOutput: "Updated Logshuttle logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestLogshuttleDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging logshuttle delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging logshuttle delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteLogshuttleFn: deleteLogshuttleError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging logshuttle delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteLogshuttleFn: deleteLogshuttleOK, }, - wantOutput: "Deleted Logshuttle logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Logshuttle logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/logshuttle/logshuttle_test.go b/pkg/commands/service/logging/logshuttle/logshuttle_test.go similarity index 99% rename from pkg/commands/logging/logshuttle/logshuttle_test.go rename to pkg/commands/service/logging/logshuttle/logshuttle_test.go index 11ebde9f0..e1b2f3929 100644 --- a/pkg/commands/logging/logshuttle/logshuttle_test.go +++ b/pkg/commands/service/logging/logshuttle/logshuttle_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logshuttle" + "github.com/fastly/cli/pkg/commands/service/logging/logshuttle" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/logshuttle/root.go b/pkg/commands/service/logging/logshuttle/root.go similarity index 100% rename from pkg/commands/logging/logshuttle/root.go rename to pkg/commands/service/logging/logshuttle/root.go diff --git a/pkg/commands/logging/logshuttle/update.go b/pkg/commands/service/logging/logshuttle/update.go similarity index 98% rename from pkg/commands/logging/logshuttle/update.go rename to pkg/commands/service/logging/logshuttle/update.go index 198a3b70f..034fa9f9e 100644 --- a/pkg/commands/logging/logshuttle/update.go +++ b/pkg/commands/service/logging/logshuttle/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/newrelic/create.go b/pkg/commands/service/logging/newrelic/create.go similarity index 98% rename from pkg/commands/logging/newrelic/create.go rename to pkg/commands/service/logging/newrelic/create.go index 6717e64fb..442dd743e 100644 --- a/pkg/commands/logging/newrelic/create.go +++ b/pkg/commands/service/logging/newrelic/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/text" diff --git a/pkg/commands/logging/newrelic/delete.go b/pkg/commands/service/logging/newrelic/delete.go similarity index 100% rename from pkg/commands/logging/newrelic/delete.go rename to pkg/commands/service/logging/newrelic/delete.go diff --git a/pkg/commands/logging/newrelic/describe.go b/pkg/commands/service/logging/newrelic/describe.go similarity index 100% rename from pkg/commands/logging/newrelic/describe.go rename to pkg/commands/service/logging/newrelic/describe.go diff --git a/pkg/commands/logging/newrelic/doc.go b/pkg/commands/service/logging/newrelic/doc.go similarity index 100% rename from pkg/commands/logging/newrelic/doc.go rename to pkg/commands/service/logging/newrelic/doc.go diff --git a/pkg/commands/logging/newrelic/list.go b/pkg/commands/service/logging/newrelic/list.go similarity index 100% rename from pkg/commands/logging/newrelic/list.go rename to pkg/commands/service/logging/newrelic/list.go diff --git a/pkg/commands/logging/newrelic/newrelic_test.go b/pkg/commands/service/logging/newrelic/newrelic_test.go similarity index 93% rename from pkg/commands/logging/newrelic/newrelic_test.go rename to pkg/commands/service/logging/newrelic/newrelic_test.go index a4a6183a9..1d1bcac64 100644 --- a/pkg/commands/logging/newrelic/newrelic_test.go +++ b/pkg/commands/service/logging/newrelic/newrelic_test.go @@ -6,8 +6,9 @@ import ( "github.com/fastly/go-fastly/v12/fastly" - root "github.com/fastly/cli/pkg/commands/logging" - sub "github.com/fastly/cli/pkg/commands/logging/newrelic" + serviceRoot "github.com/fastly/cli/pkg/commands/service" + loggingRoot "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/newrelic" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) @@ -79,7 +80,7 @@ func TestNewRelicCreate(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "create"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "create"}, scenarios) } func TestNewRelicDelete(t *testing.T) { @@ -151,7 +152,7 @@ func TestNewRelicDelete(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "delete"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "delete"}, scenarios) } func TestNewRelicDescribe(t *testing.T) { @@ -202,7 +203,7 @@ func TestNewRelicDescribe(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "describe"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "describe"}, scenarios) } func TestNewRelicList(t *testing.T) { @@ -256,7 +257,7 @@ func TestNewRelicList(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "list"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "list"}, scenarios) } func TestNewRelicUpdate(t *testing.T) { @@ -336,7 +337,7 @@ func TestNewRelicUpdate(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "update"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "update"}, scenarios) } func getNewRelic(_ context.Context, i *fastly.GetNewRelicInput) (*fastly.NewRelic, error) { diff --git a/pkg/commands/logging/newrelic/root.go b/pkg/commands/service/logging/newrelic/root.go similarity index 100% rename from pkg/commands/logging/newrelic/root.go rename to pkg/commands/service/logging/newrelic/root.go diff --git a/pkg/commands/logging/newrelic/update.go b/pkg/commands/service/logging/newrelic/update.go similarity index 98% rename from pkg/commands/logging/newrelic/update.go rename to pkg/commands/service/logging/newrelic/update.go index 54ff2d1b6..9254eb681 100644 --- a/pkg/commands/logging/newrelic/update.go +++ b/pkg/commands/service/logging/newrelic/update.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/text" diff --git a/pkg/commands/logging/newrelicotlp/create.go b/pkg/commands/service/logging/newrelicotlp/create.go similarity index 98% rename from pkg/commands/logging/newrelicotlp/create.go rename to pkg/commands/service/logging/newrelicotlp/create.go index 8d113a8a8..67b3e3459 100644 --- a/pkg/commands/logging/newrelicotlp/create.go +++ b/pkg/commands/service/logging/newrelicotlp/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/text" diff --git a/pkg/commands/logging/newrelicotlp/delete.go b/pkg/commands/service/logging/newrelicotlp/delete.go similarity index 100% rename from pkg/commands/logging/newrelicotlp/delete.go rename to pkg/commands/service/logging/newrelicotlp/delete.go diff --git a/pkg/commands/logging/newrelicotlp/describe.go b/pkg/commands/service/logging/newrelicotlp/describe.go similarity index 100% rename from pkg/commands/logging/newrelicotlp/describe.go rename to pkg/commands/service/logging/newrelicotlp/describe.go diff --git a/pkg/commands/logging/newrelicotlp/doc.go b/pkg/commands/service/logging/newrelicotlp/doc.go similarity index 100% rename from pkg/commands/logging/newrelicotlp/doc.go rename to pkg/commands/service/logging/newrelicotlp/doc.go diff --git a/pkg/commands/logging/newrelicotlp/list.go b/pkg/commands/service/logging/newrelicotlp/list.go similarity index 100% rename from pkg/commands/logging/newrelicotlp/list.go rename to pkg/commands/service/logging/newrelicotlp/list.go diff --git a/pkg/commands/logging/newrelicotlp/newrelicotlp_test.go b/pkg/commands/service/logging/newrelicotlp/newrelicotlp_test.go similarity index 94% rename from pkg/commands/logging/newrelicotlp/newrelicotlp_test.go rename to pkg/commands/service/logging/newrelicotlp/newrelicotlp_test.go index 7dfd985bc..703ca3c45 100644 --- a/pkg/commands/logging/newrelicotlp/newrelicotlp_test.go +++ b/pkg/commands/service/logging/newrelicotlp/newrelicotlp_test.go @@ -6,8 +6,9 @@ import ( "github.com/fastly/go-fastly/v12/fastly" - root "github.com/fastly/cli/pkg/commands/logging" - sub "github.com/fastly/cli/pkg/commands/logging/newrelicotlp" + serviceRoot "github.com/fastly/cli/pkg/commands/service" + loggingRoot "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/newrelicotlp" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) @@ -79,7 +80,7 @@ func TestNewRelicOTLPCreate(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "create"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "create"}, scenarios) } func TestNewRelicOTLPDelete(t *testing.T) { @@ -151,7 +152,7 @@ func TestNewRelicOTLPDelete(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "delete"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "delete"}, scenarios) } func TestNewRelicDescribe(t *testing.T) { @@ -202,7 +203,7 @@ func TestNewRelicDescribe(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "describe"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "describe"}, scenarios) } func TestNewRelicList(t *testing.T) { @@ -256,7 +257,7 @@ func TestNewRelicList(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "list"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "list"}, scenarios) } func TestNewRelicUpdate(t *testing.T) { @@ -336,7 +337,7 @@ func TestNewRelicUpdate(t *testing.T) { }, } - testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "update"}, scenarios) + testutil.RunCLIScenarios(t, []string{serviceRoot.CommandName, loggingRoot.CommandName, sub.CommandName, "update"}, scenarios) } func getNewRelic(_ context.Context, i *fastly.GetNewRelicOTLPInput) (*fastly.NewRelicOTLP, error) { diff --git a/pkg/commands/logging/newrelicotlp/root.go b/pkg/commands/service/logging/newrelicotlp/root.go similarity index 100% rename from pkg/commands/logging/newrelicotlp/root.go rename to pkg/commands/service/logging/newrelicotlp/root.go diff --git a/pkg/commands/logging/newrelicotlp/update.go b/pkg/commands/service/logging/newrelicotlp/update.go similarity index 98% rename from pkg/commands/logging/newrelicotlp/update.go rename to pkg/commands/service/logging/newrelicotlp/update.go index 2e06d83b2..d519f7db4 100644 --- a/pkg/commands/logging/newrelicotlp/update.go +++ b/pkg/commands/service/logging/newrelicotlp/update.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/text" diff --git a/pkg/commands/logging/openstack/create.go b/pkg/commands/service/logging/openstack/create.go similarity index 99% rename from pkg/commands/logging/openstack/create.go rename to pkg/commands/service/logging/openstack/create.go index 9b61febb8..59c67dc2d 100644 --- a/pkg/commands/logging/openstack/create.go +++ b/pkg/commands/service/logging/openstack/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/openstack/delete.go b/pkg/commands/service/logging/openstack/delete.go similarity index 100% rename from pkg/commands/logging/openstack/delete.go rename to pkg/commands/service/logging/openstack/delete.go diff --git a/pkg/commands/logging/openstack/describe.go b/pkg/commands/service/logging/openstack/describe.go similarity index 100% rename from pkg/commands/logging/openstack/describe.go rename to pkg/commands/service/logging/openstack/describe.go diff --git a/pkg/commands/logging/openstack/doc.go b/pkg/commands/service/logging/openstack/doc.go similarity index 100% rename from pkg/commands/logging/openstack/doc.go rename to pkg/commands/service/logging/openstack/doc.go diff --git a/pkg/commands/logging/openstack/list.go b/pkg/commands/service/logging/openstack/list.go similarity index 100% rename from pkg/commands/logging/openstack/list.go rename to pkg/commands/service/logging/openstack/list.go diff --git a/pkg/commands/logging/openstack/openstack_integration_test.go b/pkg/commands/service/logging/openstack/openstack_integration_test.go similarity index 62% rename from pkg/commands/logging/openstack/openstack_integration_test.go rename to pkg/commands/service/logging/openstack/openstack_integration_test.go index 3498a8436..dd8484677 100644 --- a/pkg/commands/logging/openstack/openstack_integration_test.go +++ b/pkg/commands/service/logging/openstack/openstack_integration_test.go @@ -1,282 +1,171 @@ package openstack_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/openstack" ) func TestOpenstackCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging openstack create --service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateOpenstackFn: createOpenstackOK, }, - wantOutput: "Created OpenStack logging endpoint log (service 123 version 4)", + WantOutput: "Created OpenStack logging endpoint log (service 123 version 4)", }, { - args: args("logging openstack create --service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateOpenstackFn: createOpenstackError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging openstack create --service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --user user --url https://example.com --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestOpenstackList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging openstack list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListOpenstacksFn: listOpenstacksOK, - }, - wantOutput: listOpenstacksShortOutput, - }, - { - args: args("logging openstack list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListOpenstacksFn: listOpenstacksOK, - }, - wantOutput: listOpenstacksVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging openstack list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListOpenstacksFn: listOpenstacksOK, }, - wantOutput: listOpenstacksVerboseOutput, + WantOutput: listOpenstacksShortOutput, }, { - args: args("logging openstack --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListOpenstacksFn: listOpenstacksOK, }, - wantOutput: listOpenstacksVerboseOutput, + WantOutput: listOpenstacksVerboseOutput, }, { - args: args("logging -v openstack list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListOpenstacksFn: listOpenstacksOK, }, - wantOutput: listOpenstacksVerboseOutput, + WantOutput: listOpenstacksVerboseOutput, }, { - args: args("logging openstack list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListOpenstacksFn: listOpenstacksError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestOpenstackDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging openstack describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging openstack describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetOpenstackFn: getOpenstackError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging openstack describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetOpenstackFn: getOpenstackOK, }, - wantOutput: describeOpenstackOutput, + WantOutput: describeOpenstackOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestOpenstackUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging openstack update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging openstack update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateOpenstackFn: updateOpenstackError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging openstack update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateOpenstackFn: updateOpenstackOK, }, - wantOutput: "Updated OpenStack logging endpoint log (service 123 version 4)", + WantOutput: "Updated OpenStack logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestOpenstackDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging openstack delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging openstack delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteOpenstackFn: deleteOpenstackError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging openstack delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteOpenstackFn: deleteOpenstackOK, }, - wantOutput: "Deleted OpenStack logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted OpenStack logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/openstack/openstack_test.go b/pkg/commands/service/logging/openstack/openstack_test.go similarity index 99% rename from pkg/commands/logging/openstack/openstack_test.go rename to pkg/commands/service/logging/openstack/openstack_test.go index 7eb1e7fdf..d9633b080 100644 --- a/pkg/commands/logging/openstack/openstack_test.go +++ b/pkg/commands/service/logging/openstack/openstack_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/openstack" + "github.com/fastly/cli/pkg/commands/service/logging/openstack" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/openstack/root.go b/pkg/commands/service/logging/openstack/root.go similarity index 100% rename from pkg/commands/logging/openstack/root.go rename to pkg/commands/service/logging/openstack/root.go diff --git a/pkg/commands/logging/openstack/update.go b/pkg/commands/service/logging/openstack/update.go similarity index 99% rename from pkg/commands/logging/openstack/update.go rename to pkg/commands/service/logging/openstack/update.go index 816764d0e..f5ab62116 100644 --- a/pkg/commands/logging/openstack/update.go +++ b/pkg/commands/service/logging/openstack/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/papertrail/create.go b/pkg/commands/service/logging/papertrail/create.go similarity index 98% rename from pkg/commands/logging/papertrail/create.go rename to pkg/commands/service/logging/papertrail/create.go index 9db34eaeb..c5f2b3964 100644 --- a/pkg/commands/logging/papertrail/create.go +++ b/pkg/commands/service/logging/papertrail/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/papertrail/delete.go b/pkg/commands/service/logging/papertrail/delete.go similarity index 100% rename from pkg/commands/logging/papertrail/delete.go rename to pkg/commands/service/logging/papertrail/delete.go diff --git a/pkg/commands/logging/papertrail/describe.go b/pkg/commands/service/logging/papertrail/describe.go similarity index 100% rename from pkg/commands/logging/papertrail/describe.go rename to pkg/commands/service/logging/papertrail/describe.go diff --git a/pkg/commands/logging/papertrail/doc.go b/pkg/commands/service/logging/papertrail/doc.go similarity index 100% rename from pkg/commands/logging/papertrail/doc.go rename to pkg/commands/service/logging/papertrail/doc.go diff --git a/pkg/commands/logging/papertrail/list.go b/pkg/commands/service/logging/papertrail/list.go similarity index 100% rename from pkg/commands/logging/papertrail/list.go rename to pkg/commands/service/logging/papertrail/list.go diff --git a/pkg/commands/logging/papertrail/papertrail_integration_test.go b/pkg/commands/service/logging/papertrail/papertrail_integration_test.go similarity index 51% rename from pkg/commands/logging/papertrail/papertrail_integration_test.go rename to pkg/commands/service/logging/papertrail/papertrail_integration_test.go index b293b52d9..9b0af7138 100644 --- a/pkg/commands/logging/papertrail/papertrail_integration_test.go +++ b/pkg/commands/service/logging/papertrail/papertrail_integration_test.go @@ -1,274 +1,163 @@ package papertrail_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/papertrail" ) func TestPapertrailCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging papertrail create --service-id 123 --version 1 --name log --address example.com:123 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com:123 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreatePapertrailFn: createPapertrailOK, }, - wantOutput: "Created Papertrail logging endpoint log (service 123 version 4)", + WantOutput: "Created Papertrail logging endpoint log (service 123 version 4)", }, { - args: args("logging papertrail create --service-id 123 --version 1 --name log --address example.com:123 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com:123 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreatePapertrailFn: createPapertrailError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestPapertrailList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging papertrail list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListPapertrailsFn: listPapertrailsOK, - }, - wantOutput: listPapertrailsShortOutput, - }, - { - args: args("logging papertrail list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListPapertrailsFn: listPapertrailsOK, - }, - wantOutput: listPapertrailsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging papertrail list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPapertrailsFn: listPapertrailsOK, }, - wantOutput: listPapertrailsVerboseOutput, + WantOutput: listPapertrailsShortOutput, }, { - args: args("logging papertrail --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPapertrailsFn: listPapertrailsOK, }, - wantOutput: listPapertrailsVerboseOutput, + WantOutput: listPapertrailsVerboseOutput, }, { - args: args("logging -v papertrail list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPapertrailsFn: listPapertrailsOK, }, - wantOutput: listPapertrailsVerboseOutput, + WantOutput: listPapertrailsVerboseOutput, }, { - args: args("logging papertrail list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListPapertrailsFn: listPapertrailsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestPapertrailDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging papertrail describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging papertrail describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetPapertrailFn: getPapertrailError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging papertrail describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetPapertrailFn: getPapertrailOK, }, - wantOutput: describePapertrailOutput, + WantOutput: describePapertrailOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestPapertrailUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging papertrail update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging papertrail update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdatePapertrailFn: updatePapertrailError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging papertrail update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdatePapertrailFn: updatePapertrailOK, }, - wantOutput: "Updated Papertrail logging endpoint log (service 123 version 4)", + WantOutput: "Updated Papertrail logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestPapertrailDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging papertrail delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging papertrail delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeletePapertrailFn: deletePapertrailError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging papertrail delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeletePapertrailFn: deletePapertrailOK, }, - wantOutput: "Deleted Papertrail logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Papertrail logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/papertrail/papertrail_test.go b/pkg/commands/service/logging/papertrail/papertrail_test.go similarity index 99% rename from pkg/commands/logging/papertrail/papertrail_test.go rename to pkg/commands/service/logging/papertrail/papertrail_test.go index 94ab9b047..38e429157 100644 --- a/pkg/commands/logging/papertrail/papertrail_test.go +++ b/pkg/commands/service/logging/papertrail/papertrail_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/papertrail" + "github.com/fastly/cli/pkg/commands/service/logging/papertrail" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/papertrail/root.go b/pkg/commands/service/logging/papertrail/root.go similarity index 100% rename from pkg/commands/logging/papertrail/root.go rename to pkg/commands/service/logging/papertrail/root.go diff --git a/pkg/commands/logging/papertrail/update.go b/pkg/commands/service/logging/papertrail/update.go similarity index 98% rename from pkg/commands/logging/papertrail/update.go rename to pkg/commands/service/logging/papertrail/update.go index ce74f65be..852a3c6fa 100644 --- a/pkg/commands/logging/papertrail/update.go +++ b/pkg/commands/service/logging/papertrail/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/root.go b/pkg/commands/service/logging/root.go similarity index 100% rename from pkg/commands/logging/root.go rename to pkg/commands/service/logging/root.go diff --git a/pkg/commands/logging/s3/create.go b/pkg/commands/service/logging/s3/create.go similarity index 99% rename from pkg/commands/logging/s3/create.go rename to pkg/commands/service/logging/s3/create.go index 0455ead27..8804afa98 100644 --- a/pkg/commands/logging/s3/create.go +++ b/pkg/commands/service/logging/s3/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/s3/delete.go b/pkg/commands/service/logging/s3/delete.go similarity index 100% rename from pkg/commands/logging/s3/delete.go rename to pkg/commands/service/logging/s3/delete.go diff --git a/pkg/commands/logging/s3/describe.go b/pkg/commands/service/logging/s3/describe.go similarity index 100% rename from pkg/commands/logging/s3/describe.go rename to pkg/commands/service/logging/s3/describe.go diff --git a/pkg/commands/logging/s3/doc.go b/pkg/commands/service/logging/s3/doc.go similarity index 100% rename from pkg/commands/logging/s3/doc.go rename to pkg/commands/service/logging/s3/doc.go diff --git a/pkg/commands/logging/s3/list.go b/pkg/commands/service/logging/s3/list.go similarity index 100% rename from pkg/commands/logging/s3/list.go rename to pkg/commands/service/logging/s3/list.go diff --git a/pkg/commands/logging/s3/root.go b/pkg/commands/service/logging/s3/root.go similarity index 100% rename from pkg/commands/logging/s3/root.go rename to pkg/commands/service/logging/s3/root.go diff --git a/pkg/commands/logging/s3/s3_integration_test.go b/pkg/commands/service/logging/s3/s3_integration_test.go similarity index 63% rename from pkg/commands/logging/s3/s3_integration_test.go rename to pkg/commands/service/logging/s3/s3_integration_test.go index 7e7e4e56a..1d304f775 100644 --- a/pkg/commands/logging/s3/s3_integration_test.go +++ b/pkg/commands/service/logging/s3/s3_integration_test.go @@ -1,341 +1,221 @@ package s3_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/s3" ) func TestS3Create(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags or the --iam-role flag must be provided", + WantError: "error parsing arguments: the --access-key and --secret-key flags or the --iam-role flag must be provided", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --secret-key bar --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --secret-key bar --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --access-key foo --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", + WantError: "error parsing arguments: the --access-key and --secret-key flags are mutually exclusive with the --iam-role flag", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateS3Fn: createS3OK, }, - wantOutput: "Created S3 logging endpoint log (service 123 version 4)", + WantOutput: "Created S3 logging endpoint log (service 123 version 4)", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --access-key foo --secret-key bar --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateS3Fn: createS3Error, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging s3 create --service-id 123 --version 1 --name log2 --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log2 --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateS3Fn: createS3OK, }, - wantOutput: "Created S3 logging endpoint log2 (service 123 version 4)", + WantOutput: "Created S3 logging endpoint log2 (service 123 version 4)", }, { - args: args("logging s3 create --service-id 123 --version 1 --name log2 --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log2 --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateS3Fn: createS3Error, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging s3 create --service-id 123 --version 1 --name log --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --bucket log --iam-role arn:aws:iam::123456789012:role/S3Access --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestS3List(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging s3 list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListS3sFn: listS3sOK, - }, - wantOutput: listS3sShortOutput, - }, - { - args: args("logging s3 list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListS3sFn: listS3sOK, - }, - wantOutput: listS3sVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging s3 list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListS3sFn: listS3sOK, }, - wantOutput: listS3sVerboseOutput, + WantOutput: listS3sShortOutput, }, { - args: args("logging s3 --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListS3sFn: listS3sOK, }, - wantOutput: listS3sVerboseOutput, + WantOutput: listS3sVerboseOutput, }, { - args: args("logging -v s3 list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListS3sFn: listS3sOK, }, - wantOutput: listS3sVerboseOutput, + WantOutput: listS3sVerboseOutput, }, { - args: args("logging s3 list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListS3sFn: listS3sError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestS3Describe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging s3 describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging s3 describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetS3Fn: getS3Error, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging s3 describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetS3Fn: getS3OK, }, - wantOutput: describeS3Output, + WantOutput: describeS3Output, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestS3Update(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging s3 update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging s3 update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateS3Fn: updateS3Error, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging s3 update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateS3Fn: updateS3OK, }, - wantOutput: "Updated S3 logging endpoint log (service 123 version 4)", - }, - { - args: args("logging s3 update --service-id 123 --version 1 --name logs --access-key foo --secret-key bar --iam-role --autoclone"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - CloneVersionFn: testutil.CloneVersionResult(4), - UpdateS3Fn: updateS3OK, - }, - wantOutput: "Updated S3 logging endpoint log (service 123 version 4)", + WantOutput: "Updated S3 logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestS3Delete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging s3 delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging s3 delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteS3Fn: deleteS3Error, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging s3 delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteS3Fn: deleteS3OK, }, - wantOutput: "Deleted S3 logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted S3 logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/s3/s3_test.go b/pkg/commands/service/logging/s3/s3_test.go similarity index 99% rename from pkg/commands/logging/s3/s3_test.go rename to pkg/commands/service/logging/s3/s3_test.go index 08baa05d6..04e664bf7 100644 --- a/pkg/commands/logging/s3/s3_test.go +++ b/pkg/commands/service/logging/s3/s3_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/s3" + "github.com/fastly/cli/pkg/commands/service/logging/s3" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/s3/update.go b/pkg/commands/service/logging/s3/update.go similarity index 99% rename from pkg/commands/logging/s3/update.go rename to pkg/commands/service/logging/s3/update.go index ba73ab650..cbf0fdf3b 100644 --- a/pkg/commands/logging/s3/update.go +++ b/pkg/commands/service/logging/s3/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/scalyr/create.go b/pkg/commands/service/logging/scalyr/create.go similarity index 98% rename from pkg/commands/logging/scalyr/create.go rename to pkg/commands/service/logging/scalyr/create.go index 5a6623798..321647b50 100644 --- a/pkg/commands/logging/scalyr/create.go +++ b/pkg/commands/service/logging/scalyr/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/scalyr/delete.go b/pkg/commands/service/logging/scalyr/delete.go similarity index 100% rename from pkg/commands/logging/scalyr/delete.go rename to pkg/commands/service/logging/scalyr/delete.go diff --git a/pkg/commands/logging/scalyr/describe.go b/pkg/commands/service/logging/scalyr/describe.go similarity index 100% rename from pkg/commands/logging/scalyr/describe.go rename to pkg/commands/service/logging/scalyr/describe.go diff --git a/pkg/commands/logging/scalyr/doc.go b/pkg/commands/service/logging/scalyr/doc.go similarity index 100% rename from pkg/commands/logging/scalyr/doc.go rename to pkg/commands/service/logging/scalyr/doc.go diff --git a/pkg/commands/logging/scalyr/list.go b/pkg/commands/service/logging/scalyr/list.go similarity index 100% rename from pkg/commands/logging/scalyr/list.go rename to pkg/commands/service/logging/scalyr/list.go diff --git a/pkg/commands/logging/scalyr/root.go b/pkg/commands/service/logging/scalyr/root.go similarity index 100% rename from pkg/commands/logging/scalyr/root.go rename to pkg/commands/service/logging/scalyr/root.go diff --git a/pkg/commands/logging/scalyr/scalyr_integration_test.go b/pkg/commands/service/logging/scalyr/scalyr_integration_test.go similarity index 53% rename from pkg/commands/logging/scalyr/scalyr_integration_test.go rename to pkg/commands/service/logging/scalyr/scalyr_integration_test.go index 2aae1e6cb..f56576661 100644 --- a/pkg/commands/logging/scalyr/scalyr_integration_test.go +++ b/pkg/commands/service/logging/scalyr/scalyr_integration_test.go @@ -1,283 +1,172 @@ package scalyr_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" fsterrs "github.com/fastly/cli/pkg/errors" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/scalyr" ) func TestScalyrCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging scalyr create --name log --service-id --version 1 --auth-token abc --autoclone"), - api: mock.API{ + Args: "--name log --version 1 --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: fsterrs.ErrNoServiceID.Error(), + WantError: fsterrs.ErrNoServiceID.Error(), }, { - args: args("logging scalyr create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateScalyrFn: createScalyrOK, }, - wantOutput: "Created Scalyr logging endpoint log (service 123 version 4)", + WantOutput: "Created Scalyr logging endpoint log (service 123 version 4)", }, { - args: args("logging scalyr create --service-id 123 --version 1 --name log --auth-token abc --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --auth-token abc --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateScalyrFn: createScalyrError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestScalyrList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging scalyr list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListScalyrsFn: listScalyrsOK, - }, - wantOutput: listScalyrsShortOutput, - }, - { - args: args("logging scalyr list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListScalyrsFn: listScalyrsOK, - }, - wantOutput: listScalyrsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging scalyr list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListScalyrsFn: listScalyrsOK, }, - wantOutput: listScalyrsVerboseOutput, + WantOutput: listScalyrsShortOutput, }, { - args: args("logging scalyr --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListScalyrsFn: listScalyrsOK, }, - wantOutput: listScalyrsVerboseOutput, + WantOutput: listScalyrsVerboseOutput, }, { - args: args("logging -v scalyr list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListScalyrsFn: listScalyrsOK, }, - wantOutput: listScalyrsVerboseOutput, + WantOutput: listScalyrsVerboseOutput, }, { - args: args("logging scalyr list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListScalyrsFn: listScalyrsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestScalyrDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging scalyr describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging scalyr describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetScalyrFn: getScalyrError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging scalyr describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetScalyrFn: getScalyrOK, }, - wantOutput: describeScalyrOutput, + WantOutput: describeScalyrOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestScalyrUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging scalyr update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging scalyr update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateScalyrFn: updateScalyrError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging scalyr update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateScalyrFn: updateScalyrOK, }, - wantOutput: "Updated Scalyr logging endpoint log (service 123 version 4)", + WantOutput: "Updated Scalyr logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestScalyrDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging scalyr delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging scalyr delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteScalyrFn: deleteScalyrError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging scalyr delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteScalyrFn: deleteScalyrOK, }, - wantOutput: "Deleted Scalyr logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Scalyr logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/scalyr/scalyr_test.go b/pkg/commands/service/logging/scalyr/scalyr_test.go similarity index 99% rename from pkg/commands/logging/scalyr/scalyr_test.go rename to pkg/commands/service/logging/scalyr/scalyr_test.go index 15c8a2f73..dc6b29f40 100644 --- a/pkg/commands/logging/scalyr/scalyr_test.go +++ b/pkg/commands/service/logging/scalyr/scalyr_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/scalyr" + "github.com/fastly/cli/pkg/commands/service/logging/scalyr" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/scalyr/update.go b/pkg/commands/service/logging/scalyr/update.go similarity index 98% rename from pkg/commands/logging/scalyr/update.go rename to pkg/commands/service/logging/scalyr/update.go index b759c3787..07a69d79c 100644 --- a/pkg/commands/logging/scalyr/update.go +++ b/pkg/commands/service/logging/scalyr/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/sftp/create.go b/pkg/commands/service/logging/sftp/create.go similarity index 99% rename from pkg/commands/logging/sftp/create.go rename to pkg/commands/service/logging/sftp/create.go index 88208c239..8d495182f 100644 --- a/pkg/commands/logging/sftp/create.go +++ b/pkg/commands/service/logging/sftp/create.go @@ -10,7 +10,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/sftp/delete.go b/pkg/commands/service/logging/sftp/delete.go similarity index 100% rename from pkg/commands/logging/sftp/delete.go rename to pkg/commands/service/logging/sftp/delete.go diff --git a/pkg/commands/logging/sftp/describe.go b/pkg/commands/service/logging/sftp/describe.go similarity index 100% rename from pkg/commands/logging/sftp/describe.go rename to pkg/commands/service/logging/sftp/describe.go diff --git a/pkg/commands/logging/sftp/doc.go b/pkg/commands/service/logging/sftp/doc.go similarity index 100% rename from pkg/commands/logging/sftp/doc.go rename to pkg/commands/service/logging/sftp/doc.go diff --git a/pkg/commands/logging/sftp/list.go b/pkg/commands/service/logging/sftp/list.go similarity index 100% rename from pkg/commands/logging/sftp/list.go rename to pkg/commands/service/logging/sftp/list.go diff --git a/pkg/commands/logging/sftp/root.go b/pkg/commands/service/logging/sftp/root.go similarity index 100% rename from pkg/commands/logging/sftp/root.go rename to pkg/commands/service/logging/sftp/root.go diff --git a/pkg/commands/logging/sftp/sftp_integration_test.go b/pkg/commands/service/logging/sftp/sftp_integration_test.go similarity index 65% rename from pkg/commands/logging/sftp/sftp_integration_test.go rename to pkg/commands/service/logging/sftp/sftp_integration_test.go index d389ad5a6..c434d00b0 100644 --- a/pkg/commands/logging/sftp/sftp_integration_test.go +++ b/pkg/commands/service/logging/sftp/sftp_integration_test.go @@ -1,282 +1,171 @@ package sftp_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/sftp" ) func TestSFTPCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sftp create --service-id 123 --version 1 --name log --address example.com --user user --ssh-known-hosts knownHosts() --port 80 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user user --ssh-known-hosts knownHosts() --port 80 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSFTPFn: createSFTPOK, }, - wantOutput: "Created SFTP logging endpoint log (service 123 version 4)", + WantOutput: "Created SFTP logging endpoint log (service 123 version 4)", }, { - args: args("logging sftp create --service-id 123 --version 1 --name log --address example.com --user user --ssh-known-hosts knownHosts() --port 80 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user user --ssh-known-hosts knownHosts() --port 80 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSFTPFn: createSFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sftp create --service-id 123 --version 1 --name log --address example.com --user anonymous --ssh-known-hosts knownHosts() --port 80 --compression-codec zstd --gzip-level 9 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address example.com --user anonymous --ssh-known-hosts knownHosts() --port 80 --compression-codec zstd --gzip-level 9 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), }, - wantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", + WantError: "error parsing arguments: the --compression-codec flag is mutually exclusive with the --gzip-level flag", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestSFTPList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging sftp list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSFTPsFn: listSFTPsOK, - }, - wantOutput: listSFTPsShortOutput, - }, - { - args: args("logging sftp list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSFTPsFn: listSFTPsOK, - }, - wantOutput: listSFTPsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging sftp list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSFTPsFn: listSFTPsOK, }, - wantOutput: listSFTPsVerboseOutput, + WantOutput: listSFTPsShortOutput, }, { - args: args("logging sftp --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSFTPsFn: listSFTPsOK, }, - wantOutput: listSFTPsVerboseOutput, + WantOutput: listSFTPsVerboseOutput, }, { - args: args("logging -v sftp list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSFTPsFn: listSFTPsOK, }, - wantOutput: listSFTPsVerboseOutput, + WantOutput: listSFTPsVerboseOutput, }, { - args: args("logging sftp list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSFTPsFn: listSFTPsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestSFTPDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sftp describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sftp describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSFTPFn: getSFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sftp describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSFTPFn: getSFTPOK, }, - wantOutput: describeSFTPOutput, + WantOutput: describeSFTPOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestSFTPUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sftp update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sftp update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSFTPFn: updateSFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sftp update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSFTPFn: updateSFTPOK, }, - wantOutput: "Updated SFTP logging endpoint log (service 123 version 4)", + WantOutput: "Updated SFTP logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestSFTPDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sftp delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sftp delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSFTPFn: deleteSFTPError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sftp delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSFTPFn: deleteSFTPOK, }, - wantOutput: "Deleted SFTP logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted SFTP logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/sftp/sftp_test.go b/pkg/commands/service/logging/sftp/sftp_test.go similarity index 99% rename from pkg/commands/logging/sftp/sftp_test.go rename to pkg/commands/service/logging/sftp/sftp_test.go index 06e30086f..92c9dcfe2 100644 --- a/pkg/commands/logging/sftp/sftp_test.go +++ b/pkg/commands/service/logging/sftp/sftp_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/sftp" + "github.com/fastly/cli/pkg/commands/service/logging/sftp" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/sftp/update.go b/pkg/commands/service/logging/sftp/update.go similarity index 99% rename from pkg/commands/logging/sftp/update.go rename to pkg/commands/service/logging/sftp/update.go index 7d05fa220..052aac29c 100644 --- a/pkg/commands/logging/sftp/update.go +++ b/pkg/commands/service/logging/sftp/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/splunk/create.go b/pkg/commands/service/logging/splunk/create.go similarity index 98% rename from pkg/commands/logging/splunk/create.go rename to pkg/commands/service/logging/splunk/create.go index 0fbffc683..ff8995d83 100644 --- a/pkg/commands/logging/splunk/create.go +++ b/pkg/commands/service/logging/splunk/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/splunk/delete.go b/pkg/commands/service/logging/splunk/delete.go similarity index 100% rename from pkg/commands/logging/splunk/delete.go rename to pkg/commands/service/logging/splunk/delete.go diff --git a/pkg/commands/logging/splunk/describe.go b/pkg/commands/service/logging/splunk/describe.go similarity index 100% rename from pkg/commands/logging/splunk/describe.go rename to pkg/commands/service/logging/splunk/describe.go diff --git a/pkg/commands/logging/splunk/doc.go b/pkg/commands/service/logging/splunk/doc.go similarity index 100% rename from pkg/commands/logging/splunk/doc.go rename to pkg/commands/service/logging/splunk/doc.go diff --git a/pkg/commands/logging/splunk/list.go b/pkg/commands/service/logging/splunk/list.go similarity index 100% rename from pkg/commands/logging/splunk/list.go rename to pkg/commands/service/logging/splunk/list.go diff --git a/pkg/commands/logging/splunk/root.go b/pkg/commands/service/logging/splunk/root.go similarity index 100% rename from pkg/commands/logging/splunk/root.go rename to pkg/commands/service/logging/splunk/root.go diff --git a/pkg/commands/logging/splunk/splunk_integration_test.go b/pkg/commands/service/logging/splunk/splunk_integration_test.go similarity index 56% rename from pkg/commands/logging/splunk/splunk_integration_test.go rename to pkg/commands/service/logging/splunk/splunk_integration_test.go index 364fcb542..0e61a22cd 100644 --- a/pkg/commands/logging/splunk/splunk_integration_test.go +++ b/pkg/commands/service/logging/splunk/splunk_integration_test.go @@ -1,274 +1,162 @@ package splunk_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/splunk" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) func TestSplunkCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging splunk create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSplunkFn: createSplunkOK, }, - wantOutput: "Created Splunk logging endpoint log (service 123 version 4)", + WantOutput: "Created Splunk logging endpoint log (service 123 version 4)", }, { - args: args("logging splunk create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSplunkFn: createSplunkError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestSplunkList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging splunk list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSplunksFn: listSplunksOK, - }, - wantOutput: listSplunksShortOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging splunk list --service-id 123 --version 1 --verbose"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSplunksFn: listSplunksOK, }, - wantOutput: listSplunksVerboseOutput, + WantOutput: listSplunksShortOutput, }, { - args: args("logging splunk list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSplunksFn: listSplunksOK, }, - wantOutput: listSplunksVerboseOutput, + WantOutput: listSplunksVerboseOutput, }, { - args: args("logging splunk --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSplunksFn: listSplunksOK, }, - wantOutput: listSplunksVerboseOutput, + WantOutput: listSplunksVerboseOutput, }, { - args: args("logging -v splunk list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSplunksFn: listSplunksOK, - }, - wantOutput: listSplunksVerboseOutput, - }, - { - args: args("logging splunk list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSplunksFn: listSplunksError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestSplunkDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging splunk describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging splunk describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSplunkFn: getSplunkError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging splunk describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSplunkFn: getSplunkOK, }, - wantOutput: describeSplunkOutput, + WantOutput: describeSplunkOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestSplunkUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging splunk update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging splunk update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSplunkFn: updateSplunkError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging splunk update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSplunkFn: updateSplunkOK, }, - wantOutput: "Updated Splunk logging endpoint log (service 123 version 4)", + WantOutput: "Updated Splunk logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestSplunkDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging splunk delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging splunk delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSplunkFn: deleteSplunkError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging splunk delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSplunkFn: deleteSplunkOK, }, - wantOutput: "Deleted Splunk logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Splunk logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/splunk/splunk_test.go b/pkg/commands/service/logging/splunk/splunk_test.go similarity index 99% rename from pkg/commands/logging/splunk/splunk_test.go rename to pkg/commands/service/logging/splunk/splunk_test.go index 437bff92d..4dcdbb316 100644 --- a/pkg/commands/logging/splunk/splunk_test.go +++ b/pkg/commands/service/logging/splunk/splunk_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/splunk" + "github.com/fastly/cli/pkg/commands/service/logging/splunk" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/splunk/update.go b/pkg/commands/service/logging/splunk/update.go similarity index 98% rename from pkg/commands/logging/splunk/update.go rename to pkg/commands/service/logging/splunk/update.go index 6fdc89823..c7d34ca65 100644 --- a/pkg/commands/logging/splunk/update.go +++ b/pkg/commands/service/logging/splunk/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/sumologic/create.go b/pkg/commands/service/logging/sumologic/create.go similarity index 98% rename from pkg/commands/logging/sumologic/create.go rename to pkg/commands/service/logging/sumologic/create.go index 6ff54e659..c31c32a68 100644 --- a/pkg/commands/logging/sumologic/create.go +++ b/pkg/commands/service/logging/sumologic/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/sumologic/delete.go b/pkg/commands/service/logging/sumologic/delete.go similarity index 100% rename from pkg/commands/logging/sumologic/delete.go rename to pkg/commands/service/logging/sumologic/delete.go diff --git a/pkg/commands/logging/sumologic/describe.go b/pkg/commands/service/logging/sumologic/describe.go similarity index 100% rename from pkg/commands/logging/sumologic/describe.go rename to pkg/commands/service/logging/sumologic/describe.go diff --git a/pkg/commands/logging/sumologic/doc.go b/pkg/commands/service/logging/sumologic/doc.go similarity index 100% rename from pkg/commands/logging/sumologic/doc.go rename to pkg/commands/service/logging/sumologic/doc.go diff --git a/pkg/commands/logging/sumologic/list.go b/pkg/commands/service/logging/sumologic/list.go similarity index 100% rename from pkg/commands/logging/sumologic/list.go rename to pkg/commands/service/logging/sumologic/list.go diff --git a/pkg/commands/logging/sumologic/root.go b/pkg/commands/service/logging/sumologic/root.go similarity index 100% rename from pkg/commands/logging/sumologic/root.go rename to pkg/commands/service/logging/sumologic/root.go diff --git a/pkg/commands/logging/sumologic/sumologic_integration_test.go b/pkg/commands/service/logging/sumologic/sumologic_integration_test.go similarity index 51% rename from pkg/commands/logging/sumologic/sumologic_integration_test.go rename to pkg/commands/service/logging/sumologic/sumologic_integration_test.go index ecce506ae..3690b7016 100644 --- a/pkg/commands/logging/sumologic/sumologic_integration_test.go +++ b/pkg/commands/service/logging/sumologic/sumologic_integration_test.go @@ -1,274 +1,162 @@ package sumologic_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/sumologic" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" ) func TestSumologicCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sumologic create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSumologicFn: createSumologicOK, }, - wantOutput: "Created Sumologic logging endpoint log (service 123 version 4)", + WantOutput: "Created Sumologic logging endpoint log (service 123 version 4)", }, { - args: args("logging sumologic create --service-id 123 --version 1 --name log --url example.com --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --url example.com --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSumologicFn: createSumologicError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestSumologicList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging sumologic list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSumologicsFn: listSumologicsOK, - }, - wantOutput: listSumologicsShortOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging sumologic list --service-id 123 --version 1 --verbose"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSumologicsFn: listSumologicsOK, }, - wantOutput: listSumologicsVerboseOutput, + WantOutput: listSumologicsShortOutput, }, { - args: args("logging sumologic list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSumologicsFn: listSumologicsOK, }, - wantOutput: listSumologicsVerboseOutput, + WantOutput: listSumologicsVerboseOutput, }, { - args: args("logging sumologic --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSumologicsFn: listSumologicsOK, }, - wantOutput: listSumologicsVerboseOutput, + WantOutput: listSumologicsVerboseOutput, }, { - args: args("logging -v sumologic list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSumologicsFn: listSumologicsOK, - }, - wantOutput: listSumologicsVerboseOutput, - }, - { - args: args("logging sumologic list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSumologicsFn: listSumologicsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestSumologicDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sumologic describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sumologic describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSumologicFn: getSumologicError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sumologic describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSumologicFn: getSumologicOK, }, - wantOutput: describeSumologicOutput, + WantOutput: describeSumologicOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestSumologicUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sumologic update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sumologic update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSumologicFn: updateSumologicError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sumologic update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSumologicFn: updateSumologicOK, }, - wantOutput: "Updated Sumologic logging endpoint log (service 123 version 4)", + WantOutput: "Updated Sumologic logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestSumologicDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging sumologic delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging sumologic delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSumologicFn: deleteSumologicError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging sumologic delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSumologicFn: deleteSumologicOK, }, - wantOutput: "Deleted Sumologic logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Sumologic logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/sumologic/sumologic_test.go b/pkg/commands/service/logging/sumologic/sumologic_test.go similarity index 99% rename from pkg/commands/logging/sumologic/sumologic_test.go rename to pkg/commands/service/logging/sumologic/sumologic_test.go index e0cd55cb2..232f8112d 100644 --- a/pkg/commands/logging/sumologic/sumologic_test.go +++ b/pkg/commands/service/logging/sumologic/sumologic_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/sumologic" + "github.com/fastly/cli/pkg/commands/service/logging/sumologic" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/sumologic/update.go b/pkg/commands/service/logging/sumologic/update.go similarity index 98% rename from pkg/commands/logging/sumologic/update.go rename to pkg/commands/service/logging/sumologic/update.go index a796855a7..377275f8b 100644 --- a/pkg/commands/logging/sumologic/update.go +++ b/pkg/commands/service/logging/sumologic/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/syslog/create.go b/pkg/commands/service/logging/syslog/create.go similarity index 99% rename from pkg/commands/logging/syslog/create.go rename to pkg/commands/service/logging/syslog/create.go index 060600933..74d35d4c0 100644 --- a/pkg/commands/logging/syslog/create.go +++ b/pkg/commands/service/logging/syslog/create.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest" diff --git a/pkg/commands/logging/syslog/delete.go b/pkg/commands/service/logging/syslog/delete.go similarity index 100% rename from pkg/commands/logging/syslog/delete.go rename to pkg/commands/service/logging/syslog/delete.go diff --git a/pkg/commands/logging/syslog/describe.go b/pkg/commands/service/logging/syslog/describe.go similarity index 100% rename from pkg/commands/logging/syslog/describe.go rename to pkg/commands/service/logging/syslog/describe.go diff --git a/pkg/commands/logging/syslog/doc.go b/pkg/commands/service/logging/syslog/doc.go similarity index 100% rename from pkg/commands/logging/syslog/doc.go rename to pkg/commands/service/logging/syslog/doc.go diff --git a/pkg/commands/logging/syslog/list.go b/pkg/commands/service/logging/syslog/list.go similarity index 100% rename from pkg/commands/logging/syslog/list.go rename to pkg/commands/service/logging/syslog/list.go diff --git a/pkg/commands/logging/syslog/root.go b/pkg/commands/service/logging/syslog/root.go similarity index 100% rename from pkg/commands/logging/syslog/root.go rename to pkg/commands/service/logging/syslog/root.go diff --git a/pkg/commands/logging/syslog/syslog_integration_test.go b/pkg/commands/service/logging/syslog/syslog_integration_test.go similarity index 59% rename from pkg/commands/logging/syslog/syslog_integration_test.go rename to pkg/commands/service/logging/syslog/syslog_integration_test.go index 673c171b7..ce8d8736d 100644 --- a/pkg/commands/logging/syslog/syslog_integration_test.go +++ b/pkg/commands/service/logging/syslog/syslog_integration_test.go @@ -1,274 +1,163 @@ package syslog_test import ( - "bytes" "context" "errors" - "io" "strings" "testing" "github.com/fastly/go-fastly/v12/fastly" - "github.com/fastly/cli/pkg/app" - "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/mock" "github.com/fastly/cli/pkg/testutil" + + root "github.com/fastly/cli/pkg/commands/service" + parent "github.com/fastly/cli/pkg/commands/service/logging" + sub "github.com/fastly/cli/pkg/commands/service/logging/syslog" ) func TestSyslogCreate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging syslog create --service-id 123 --version 1 --name log --address 127.0.0.1 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address 127.0.0.1 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSyslogFn: createSyslogOK, }, - wantOutput: "Created Syslog logging endpoint log (service 123 version 4)", + WantOutput: "Created Syslog logging endpoint log (service 123 version 4)", }, { - args: args("logging syslog create --service-id 123 --version 1 --name log --address 127.0.0.1 --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name log --address 127.0.0.1 --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), CreateSyslogFn: createSyslogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "create"}, scenarios) } func TestSyslogList(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ - { - args: args("logging syslog list --service-id 123 --version 1"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSyslogsFn: listSyslogsOK, - }, - wantOutput: listSyslogsShortOutput, - }, - { - args: args("logging syslog list --service-id 123 --version 1 --verbose"), - api: mock.API{ - ListVersionsFn: testutil.ListVersions, - ListSyslogsFn: listSyslogsOK, - }, - wantOutput: listSyslogsVerboseOutput, - }, + scenarios := []testutil.CLIScenario{ { - args: args("logging syslog list --service-id 123 --version 1 -v"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSyslogsFn: listSyslogsOK, }, - wantOutput: listSyslogsVerboseOutput, + WantOutput: listSyslogsShortOutput, }, { - args: args("logging syslog --verbose list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 --verbose", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSyslogsFn: listSyslogsOK, }, - wantOutput: listSyslogsVerboseOutput, + WantOutput: listSyslogsVerboseOutput, }, { - args: args("logging -v syslog list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1 -v", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSyslogsFn: listSyslogsOK, }, - wantOutput: listSyslogsVerboseOutput, + WantOutput: listSyslogsVerboseOutput, }, { - args: args("logging syslog list --service-id 123 --version 1"), - api: mock.API{ + Args: "--service-id 123 --version 1", + API: mock.API{ ListVersionsFn: testutil.ListVersions, ListSyslogsFn: listSyslogsError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "list"}, scenarios) } func TestSyslogDescribe(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging syslog describe --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging syslog describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSyslogFn: getSyslogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging syslog describe --service-id 123 --version 1 --name logs"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs", + API: mock.API{ ListVersionsFn: testutil.ListVersions, GetSyslogFn: getSyslogOK, }, - wantOutput: describeSyslogOutput, + WantOutput: describeSyslogOutput, }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertString(t, testcase.wantOutput, stdout.String()) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "describe"}, scenarios) } func TestSyslogUpdate(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging syslog update --service-id 123 --version 1 --new-name log"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1 --new-name log", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging syslog update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSyslogFn: updateSyslogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging syslog update --service-id 123 --version 1 --name logs --new-name log --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --new-name log --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), UpdateSyslogFn: updateSyslogOK, }, - wantOutput: "Updated Syslog logging endpoint log (service 123 version 4)", + WantOutput: "Updated Syslog logging endpoint log (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "update"}, scenarios) } func TestSyslogDelete(t *testing.T) { - args := testutil.SplitArgs - scenarios := []struct { - args []string - api mock.API - wantError string - wantOutput string - }{ + scenarios := []testutil.CLIScenario{ { - args: args("logging syslog delete --service-id 123 --version 1"), - wantError: "error parsing arguments: required flag --name not provided", + Args: "--service-id 123 --version 1", + WantError: "error parsing arguments: required flag --name not provided", }, { - args: args("logging syslog delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSyslogFn: deleteSyslogError, }, - wantError: errTest.Error(), + WantError: errTest.Error(), }, { - args: args("logging syslog delete --service-id 123 --version 1 --name logs --autoclone"), - api: mock.API{ + Args: "--service-id 123 --version 1 --name logs --autoclone", + API: mock.API{ ListVersionsFn: testutil.ListVersions, CloneVersionFn: testutil.CloneVersionResult(4), DeleteSyslogFn: deleteSyslogOK, }, - wantOutput: "Deleted Syslog logging endpoint logs (service 123 version 4)", + WantOutput: "Deleted Syslog logging endpoint logs (service 123 version 4)", }, } - for testcaseIdx := range scenarios { - testcase := &scenarios[testcaseIdx] - t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - var stdout bytes.Buffer - app.Init = func(_ []string, _ io.Reader) (*global.Data, error) { - opts := testutil.MockGlobalData(testcase.args, &stdout) - opts.APIClientFactory = mock.APIClient(testcase.api) - return opts, nil - } - err := app.Run(testcase.args, nil) - testutil.AssertErrorContains(t, err, testcase.wantError) - testutil.AssertStringContains(t, stdout.String(), testcase.wantOutput) - }) - } + testutil.RunCLIScenarios(t, []string{root.CommandName, parent.CommandName, sub.CommandName, "delete"}, scenarios) } var errTest = errors.New("fixture error") diff --git a/pkg/commands/logging/syslog/syslog_test.go b/pkg/commands/service/logging/syslog/syslog_test.go similarity index 99% rename from pkg/commands/logging/syslog/syslog_test.go rename to pkg/commands/service/logging/syslog/syslog_test.go index 15d1b023c..2b7e2f565 100644 --- a/pkg/commands/logging/syslog/syslog_test.go +++ b/pkg/commands/service/logging/syslog/syslog_test.go @@ -7,7 +7,7 @@ import ( "github.com/fastly/go-fastly/v12/fastly" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/syslog" + "github.com/fastly/cli/pkg/commands/service/logging/syslog" "github.com/fastly/cli/pkg/config" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" diff --git a/pkg/commands/logging/syslog/update.go b/pkg/commands/service/logging/syslog/update.go similarity index 99% rename from pkg/commands/logging/syslog/update.go rename to pkg/commands/service/logging/syslog/update.go index 463798c3c..ac15f4606 100644 --- a/pkg/commands/logging/syslog/update.go +++ b/pkg/commands/service/logging/syslog/update.go @@ -9,7 +9,7 @@ import ( "4d63.com/optional" "github.com/fastly/cli/pkg/argparser" - "github.com/fastly/cli/pkg/commands/logging/logflags" + "github.com/fastly/cli/pkg/commands/service/logging/logflags" "github.com/fastly/cli/pkg/errors" "github.com/fastly/cli/pkg/global" "github.com/fastly/cli/pkg/manifest"