github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/commands/logging/cloudfiles/delete.go (about) 1 package cloudfiles 2 3 import ( 4 "io" 5 6 "github.com/fastly/go-fastly/v9/fastly" 7 8 "github.com/fastly/cli/pkg/argparser" 9 "github.com/fastly/cli/pkg/errors" 10 "github.com/fastly/cli/pkg/global" 11 "github.com/fastly/cli/pkg/text" 12 ) 13 14 // DeleteCommand calls the Fastly API to delete a Cloudfiles logging endpoint. 15 type DeleteCommand struct { 16 argparser.Base 17 Input fastly.DeleteCloudfilesInput 18 serviceName argparser.OptionalServiceNameID 19 serviceVersion argparser.OptionalServiceVersion 20 autoClone argparser.OptionalAutoClone 21 } 22 23 // NewDeleteCommand returns a usable command registered under the parent. 24 func NewDeleteCommand(parent argparser.Registerer, g *global.Data) *DeleteCommand { 25 c := DeleteCommand{ 26 Base: argparser.Base{ 27 Globals: g, 28 }, 29 } 30 c.CmdClause = parent.Command("delete", "Delete a Cloudfiles logging endpoint on a Fastly service version").Alias("remove") 31 32 // Required. 33 c.CmdClause.Flag("name", "The name of the Cloudfiles logging object").Short('n').Required().StringVar(&c.Input.Name) 34 c.RegisterFlag(argparser.StringFlagOpts{ 35 Name: argparser.FlagVersionName, 36 Description: argparser.FlagVersionDesc, 37 Dst: &c.serviceVersion.Value, 38 Required: true, 39 }) 40 41 // Optional. 42 c.RegisterAutoCloneFlag(argparser.AutoCloneFlagOpts{ 43 Action: c.autoClone.Set, 44 Dst: &c.autoClone.Value, 45 }) 46 c.RegisterFlag(argparser.StringFlagOpts{ 47 Name: argparser.FlagServiceIDName, 48 Description: argparser.FlagServiceIDDesc, 49 Dst: &g.Manifest.Flag.ServiceID, 50 Short: 's', 51 }) 52 c.RegisterFlag(argparser.StringFlagOpts{ 53 Action: c.serviceName.Set, 54 Name: argparser.FlagServiceName, 55 Description: argparser.FlagServiceDesc, 56 Dst: &c.serviceName.Value, 57 }) 58 return &c 59 } 60 61 // Exec invokes the application logic for the command. 62 func (c *DeleteCommand) Exec(_ io.Reader, out io.Writer) error { 63 serviceID, serviceVersion, err := argparser.ServiceDetails(argparser.ServiceDetailsOpts{ 64 AutoCloneFlag: c.autoClone, 65 APIClient: c.Globals.APIClient, 66 Manifest: *c.Globals.Manifest, 67 Out: out, 68 ServiceNameFlag: c.serviceName, 69 ServiceVersionFlag: c.serviceVersion, 70 VerboseMode: c.Globals.Flags.Verbose, 71 }) 72 if err != nil { 73 c.Globals.ErrLog.AddWithContext(err, map[string]any{ 74 "Service ID": serviceID, 75 "Service Version": errors.ServiceVersion(serviceVersion), 76 }) 77 return err 78 } 79 80 c.Input.ServiceID = serviceID 81 c.Input.ServiceVersion = fastly.ToValue(serviceVersion.Number) 82 83 if err := c.Globals.APIClient.DeleteCloudfiles(&c.Input); err != nil { 84 c.Globals.ErrLog.AddWithContext(err, map[string]any{ 85 "Service ID": serviceID, 86 "Service Version": fastly.ToValue(serviceVersion.Number), 87 }) 88 return err 89 } 90 91 text.Success(out, "Deleted Cloudfiles logging endpoint %s (service %s version %d)", c.Input.Name, c.Input.ServiceID, c.Input.ServiceVersion) 92 return nil 93 }