diff --git a/main.go b/main.go index c395794..0ddb676 100644 --- a/main.go +++ b/main.go @@ -76,6 +76,8 @@ var rootCmd = &cobra.Command{ RunE: func(cmd *cobra.Command, args []string) error { var deliveryMethod DeliveryMethod switch { + case resendAPIKey != "" && smtpUsername != "" && smtpPassword != "": + deliveryMethod = Unknown case resendAPIKey != "": deliveryMethod = Resend case smtpUsername != "" && smtpPassword != "": @@ -83,12 +85,20 @@ var rootCmd = &cobra.Command{ from = smtpUsername } - if deliveryMethod == None { + switch deliveryMethod { + case None: fmt.Printf("\n %s %s %s\n\n", errorHeaderStyle.String(), inlineCodeStyle.Render(ResendAPIKey), "environment variable is required.") fmt.Printf(" %s %s\n\n", commentStyle.Render("You can grab one at"), linkStyle.Render("https://resend.com/api-keys")) cmd.SilenceUsage = true cmd.SilenceErrors = true return errors.New("missing required environment variable") + case Unknown: + fmt.Printf("\n %s Unknown delivery method.\n", errorHeaderStyle.String()) + fmt.Printf("\n You have set both %s and %s delivery methods.", inlineCodeStyle.Render(ResendAPIKey), inlineCodeStyle.Render("POP_SMPT_*")) + fmt.Printf("\n Set only one of these environment variables.\n\n") + cmd.SilenceUsage = true + cmd.SilenceErrors = true + return errors.New("unknown delivery method") } if hasStdin() { diff --git a/model.go b/model.go index 6488fbe..a6cf30a 100644 --- a/model.go +++ b/model.go @@ -41,6 +41,9 @@ const ( Resend // SMTP uses an SMTP server to send an email. SMTP + // Unknown is set when the user has not chosen a single delivery method. + // i.e. multiple delivery methods are set. + Unknown ) // Model is Pop's application model.