github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/commands/vcl/condition/delete.go (about) 1 package condition 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 an appropriate resource. 15 type DeleteCommand struct { 16 argparser.Base 17 name string 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 condition on a Fastly service version").Alias("remove") 31 32 // Required flags 33 c.CmdClause.Flag("name", "Condition name").Short('n').Required().StringVar(&c.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 flags 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 59 return &c 60 } 61 62 // Exec invokes the application logic for the command. 63 func (c *DeleteCommand) Exec(_ io.Reader, out io.Writer) error { 64 serviceID, serviceVersion, err := argparser.ServiceDetails(argparser.ServiceDetailsOpts{ 65 AutoCloneFlag: c.autoClone, 66 APIClient: c.Globals.APIClient, 67 Manifest: *c.Globals.Manifest, 68 Out: out, 69 ServiceNameFlag: c.serviceName, 70 ServiceVersionFlag: c.serviceVersion, 71 VerboseMode: c.Globals.Flags.Verbose, 72 }) 73 if err != nil { 74 c.Globals.ErrLog.AddWithContext(err, map[string]any{ 75 "Service ID": serviceID, 76 "Service Version": errors.ServiceVersion(serviceVersion), 77 }) 78 return err 79 } 80 81 var input fastly.DeleteConditionInput 82 input.ServiceID = serviceID 83 input.ServiceVersion = fastly.ToValue(serviceVersion.Number) 84 input.Name = c.name 85 86 if err := c.Globals.APIClient.DeleteCondition(&input); err != nil { 87 c.Globals.ErrLog.AddWithContext(err, map[string]any{ 88 "Service ID": serviceID, 89 "Service Version": fastly.ToValue(serviceVersion.Number), 90 }) 91 return err 92 } 93 94 text.Success(out, "Deleted condition %s (service %s version %d)", c.name, serviceID, fastly.ToValue(serviceVersion.Number)) 95 return nil 96 }