github.com/fastly/cli@v1.7.2-0.20240304164155-9d0f1d77c3bf/pkg/commands/dictionaryentry/describe.go (about) 1 package dictionaryentry 2 3 import ( 4 "fmt" 5 "io" 6 7 "github.com/fastly/go-fastly/v9/fastly" 8 9 "github.com/fastly/cli/pkg/argparser" 10 fsterr "github.com/fastly/cli/pkg/errors" 11 "github.com/fastly/cli/pkg/global" 12 "github.com/fastly/cli/pkg/text" 13 ) 14 15 // DescribeCommand calls the Fastly API to describe a dictionary item. 16 type DescribeCommand struct { 17 argparser.Base 18 argparser.JSONOutput 19 20 Input fastly.GetDictionaryItemInput 21 serviceName argparser.OptionalServiceNameID 22 } 23 24 // NewDescribeCommand returns a usable command registered under the parent. 25 func NewDescribeCommand(parent argparser.Registerer, g *global.Data) *DescribeCommand { 26 c := DescribeCommand{ 27 Base: argparser.Base{ 28 Globals: g, 29 }, 30 } 31 c.CmdClause = parent.Command("describe", "Show detailed information about a Fastly edge dictionary item").Alias("get") 32 33 // Required. 34 c.CmdClause.Flag("dictionary-id", "Dictionary ID").Required().StringVar(&c.Input.DictionaryID) 35 c.CmdClause.Flag("key", "Dictionary item key").Required().StringVar(&c.Input.ItemKey) 36 37 // Optional. 38 c.RegisterFlagBool(c.JSONFlag()) // --json 39 c.RegisterFlag(argparser.StringFlagOpts{ 40 Name: argparser.FlagServiceIDName, 41 Description: argparser.FlagServiceIDDesc, 42 Dst: &g.Manifest.Flag.ServiceID, 43 Short: 's', 44 }) 45 c.RegisterFlag(argparser.StringFlagOpts{ 46 Action: c.serviceName.Set, 47 Name: argparser.FlagServiceName, 48 Description: argparser.FlagServiceDesc, 49 Dst: &c.serviceName.Value, 50 }) 51 52 return &c 53 } 54 55 // Exec invokes the application logic for the command. 56 func (c *DescribeCommand) Exec(_ io.Reader, out io.Writer) error { 57 if c.Globals.Verbose() && c.JSONOutput.Enabled { 58 return fsterr.ErrInvalidVerboseJSONCombo 59 } 60 61 serviceID, source, flag, err := argparser.ServiceID(c.serviceName, *c.Globals.Manifest, c.Globals.APIClient, c.Globals.ErrLog) 62 if err != nil { 63 return err 64 } 65 if c.Globals.Verbose() { 66 argparser.DisplayServiceID(serviceID, flag, source, out) 67 } 68 69 c.Input.ServiceID = serviceID 70 71 o, err := c.Globals.APIClient.GetDictionaryItem(&c.Input) 72 if err != nil { 73 c.Globals.ErrLog.AddWithContext(err, map[string]any{ 74 "Service ID": serviceID, 75 }) 76 return err 77 } 78 79 if ok, err := c.WriteJSON(out, o); ok { 80 return err 81 } 82 83 if !c.Globals.Verbose() { 84 fmt.Fprintf(out, "\nService ID: %s\n", c.Input.ServiceID) 85 } 86 text.PrintDictionaryItem(out, "", o) 87 return nil 88 }