@@ -103,67 +103,73 @@ var transactionalListCmd = &cobra.Command{
103103 },
104104}
105105
106- var transactionalSendCmd = & cobra.Command {
107- Use : "send" ,
108- Short : "Send a transactional email" ,
109- RunE : func (cmd * cobra.Command , args []string ) error {
110- cfg , err := config .Load ()
111- if err != nil {
112- return err
113- }
114-
115- email , _ := cmd .Flags ().GetString ("email" )
116- id , _ := cmd .Flags ().GetString ("id" )
117- dataRaw , _ := cmd .Flags ().GetString ("data" )
106+ func transactionalSendRunE (cmd * cobra.Command , args []string ) error {
107+ cfg , err := config .Load ()
108+ if err != nil {
109+ return err
110+ }
118111
119- req := api.SendTransactionalRequest {
120- Email : email ,
121- TransactionalID : id ,
122- }
112+ email , _ := cmd .Flags ().GetString ("email" )
113+ id , _ := cmd .Flags ().GetString ("id" )
114+ dataRaw , _ := cmd .Flags ().GetString ("data" )
123115
124- if cmd . Flags (). Changed ( "add-to-audience" ) {
125- v , _ := cmd . Flags (). GetBool ( "add-to-audience" )
126- req . AddToAudience = & v
127- }
116+ req := api. SendTransactionalRequest {
117+ Email : email ,
118+ TransactionalID : id ,
119+ }
128120
129- if dataRaw != "" {
130- if err := json .Unmarshal ([]byte (dataRaw ), & req .DataVariables ); err != nil {
131- return fmt .Errorf ("--data must be a valid JSON object: %w" , err )
132- }
133- }
121+ if cmd .Flags ().Changed ("add-to-audience" ) {
122+ v , _ := cmd .Flags ().GetBool ("add-to-audience" )
123+ req .AddToAudience = & v
124+ }
134125
135- paths , _ := cmd .Flags ().GetStringArray ("attachment" )
136- for _ , path := range paths {
137- a , err := attachmentFromPath (path )
138- if err != nil {
139- return err
140- }
141- req .Attachments = append (req .Attachments , a )
126+ if dataRaw != "" {
127+ if err := json .Unmarshal ([]byte (dataRaw ), & req .DataVariables ); err != nil {
128+ return fmt .Errorf ("--data must be a valid JSON object: %w" , err )
142129 }
130+ }
143131
144- if err := runTransactionalSend (cfg , req ); err != nil {
132+ paths , _ := cmd .Flags ().GetStringArray ("attachment" )
133+ for _ , path := range paths {
134+ a , err := attachmentFromPath (path )
135+ if err != nil {
145136 return err
146137 }
138+ req .Attachments = append (req .Attachments , a )
139+ }
147140
148- if isJSONOutput () {
149- return printJSON (cmd .OutOrStdout (), Result {Success : true })
150- }
151- fmt .Fprintln (cmd .OutOrStdout (), "Sent." )
152- return nil
153- },
141+ if err := runTransactionalSend (cfg , req ); err != nil {
142+ return err
143+ }
144+
145+ if isJSONOutput () {
146+ return printJSON (cmd .OutOrStdout (), Result {Success : true })
147+ }
148+ fmt .Fprintln (cmd .OutOrStdout (), "Sent." )
149+ return nil
150+ }
151+
152+ func addTransactionalSendFlags (cmd * cobra.Command ) {
153+ cmd .Flags ().String ("email" , "" , "Recipient email address" )
154+ cmd .Flags ().String ("id" , "" , "Transactional email ID" )
155+ cmd .Flags ().BoolP ("add-to-audience" , "a" , false , "Create a contact if one doesn't exist" )
156+ cmd .Flags ().String ("data" , "" , "Data variables as a JSON object" )
157+ cmd .Flags ().StringArrayP ("attachment" , "A" , nil , "Path to a file to attach (repeatable)" )
158+ cmd .MarkFlagRequired ("email" )
159+ cmd .MarkFlagRequired ("id" )
160+ }
161+
162+ var transactionalSendCmd = & cobra.Command {
163+ Use : "send" ,
164+ Short : "Send a transactional email" ,
165+ RunE : transactionalSendRunE ,
154166}
155167
156168func init () {
157169 addPaginationFlags (transactionalListCmd )
158170 transactionalCmd .AddCommand (transactionalListCmd )
159171
160- transactionalSendCmd .Flags ().String ("email" , "" , "Recipient email address" )
161- transactionalSendCmd .Flags ().String ("id" , "" , "Transactional email ID" )
162- transactionalSendCmd .Flags ().BoolP ("add-to-audience" , "a" , false , "Create a contact if one doesn't exist" )
163- transactionalSendCmd .Flags ().String ("data" , "" , "Data variables as a JSON object" )
164- transactionalSendCmd .Flags ().StringArrayP ("attachment" , "A" , nil , "Path to a file to attach (repeatable)" )
165- transactionalSendCmd .MarkFlagRequired ("email" )
166- transactionalSendCmd .MarkFlagRequired ("id" )
172+ addTransactionalSendFlags (transactionalSendCmd )
167173 transactionalCmd .AddCommand (transactionalSendCmd )
168174
169175 rootCmd .AddCommand (transactionalCmd )
0 commit comments