From 17da7c79169348a339f80ff1066e70beb1e7e460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matou=C5=A1=20Dzivjak?= Date: Thu, 26 Mar 2026 13:05:23 +0100 Subject: [PATCH] fix(cli): honor merchant context fallback --- internal/commands/payouts/payouts.go | 13 +++--- internal/commands/readers/readers.go | 65 +++++++++++++++++----------- 2 files changed, 48 insertions(+), 30 deletions(-) diff --git a/internal/commands/payouts/payouts.go b/internal/commands/payouts/payouts.go index 4014bc5..b4d7ace 100644 --- a/internal/commands/payouts/payouts.go +++ b/internal/commands/payouts/payouts.go @@ -27,10 +27,9 @@ func NewCommand() *cli.Command { Action: listPayouts, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code whose payouts should be listed.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code whose payouts should be listed. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, &cli.StringFlag{ Name: "start-date", @@ -61,6 +60,10 @@ func listPayouts(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } startDate, err := parseDateArg(cmd.String("start-date")) if err != nil { return err @@ -85,7 +88,7 @@ func listPayouts(ctx context.Context, cmd *cli.Command) error { params.Order = &order } - payoutList, err := appCtx.Client.Payouts.List(ctx, cmd.String("merchant-code"), params) + payoutList, err := appCtx.Client.Payouts.List(ctx, merchantCode, params) if err != nil { return fmt.Errorf("list payouts: %w", err) } diff --git a/internal/commands/readers/readers.go b/internal/commands/readers/readers.go index 8f5b186..c3cdc32 100644 --- a/internal/commands/readers/readers.go +++ b/internal/commands/readers/readers.go @@ -31,10 +31,9 @@ func NewCommand() *cli.Command { Action: listReaders, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code whose readers should be listed.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code whose readers should be listed. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, }, }, @@ -44,10 +43,9 @@ func NewCommand() *cli.Command { Action: addReader, Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code that will own the new reader.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code that will own the new reader. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, &cli.StringFlag{ Name: "pairing-code", @@ -68,10 +66,9 @@ func NewCommand() *cli.Command { ArgsUsage: "", Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code that owns the reader.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code that owns the reader. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, }, }, @@ -82,10 +79,9 @@ func NewCommand() *cli.Command { ArgsUsage: "", Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code that owns the reader.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code that owns the reader. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, }, }, @@ -96,10 +92,9 @@ func NewCommand() *cli.Command { ArgsUsage: "", Flags: []cli.Flag{ &cli.StringFlag{ - Name: "merchant-code", - Usage: "Merchant code that owns the reader.", - Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), - Required: true, + Name: "merchant-code", + Usage: "Merchant code that owns the reader. Falls back to context.", + Sources: cli.EnvVars("SUMUP_MERCHANT_CODE"), }, &cli.StringFlag{ Name: "amount", @@ -163,7 +158,11 @@ func listReaders(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } - response, err := appCtx.Client.Readers.List(ctx, cmd.String("merchant-code")) + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } + response, err := appCtx.Client.Readers.List(ctx, merchantCode) if err != nil { return fmt.Errorf("list readers: %w", err) } @@ -198,12 +197,16 @@ func addReader(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } body := sumup.ReadersCreateParams{ PairingCode: sumup.ReaderPairingCode(cmd.String("pairing-code")), Name: sumup.ReaderName(cmd.String("name")), } - reader, err := appCtx.Client.Readers.Create(ctx, cmd.String("merchant-code"), body) + reader, err := appCtx.Client.Readers.Create(ctx, merchantCode, body) if pErr := new(sumup.Problem); errors.As(err, &pErr) { return fmt.Errorf("create reader: %v %v", *pErr.Detail, *pErr.Title) } else if err != nil { @@ -230,12 +233,16 @@ func deleteReader(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } readerID, err := util.RequireSingleArg(cmd, "reader ID") if err != nil { return err } - err = appCtx.Client.Readers.Delete(ctx, cmd.String("merchant-code"), sumup.ReaderID(readerID)) + err = appCtx.Client.Readers.Delete(ctx, merchantCode, sumup.ReaderID(readerID)) if err != nil { return fmt.Errorf("delete reader: %w", err) } @@ -253,6 +260,10 @@ func readerCheckout(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } readerID, err := util.RequireSingleArg(cmd, "reader ID") if err != nil { return err @@ -310,7 +321,7 @@ func readerCheckout(ctx context.Context, cmd *cli.Command) error { body.Affiliate = nullable.Value(*affiliate) } - response, err := appCtx.Client.Readers.CreateCheckout(ctx, cmd.String("merchant-code"), readerID, body) + response, err := appCtx.Client.Readers.CreateCheckout(ctx, merchantCode, readerID, body) if err != nil { return fmt.Errorf("trigger reader checkout: %w", err) } @@ -336,12 +347,16 @@ func readerStatus(ctx context.Context, cmd *cli.Command) error { if err != nil { return err } + merchantCode, err := app.GetMerchantCode(cmd, "merchant-code") + if err != nil { + return err + } readerID, err := util.RequireSingleArg(cmd, "reader ID") if err != nil { return err } - response, err := appCtx.Client.Readers.GetStatus(ctx, cmd.String("merchant-code"), readerID, sumup.ReadersGetStatusParams{}) + response, err := appCtx.Client.Readers.GetStatus(ctx, merchantCode, readerID, sumup.ReadersGetStatusParams{}) if err != nil { return fmt.Errorf("get reader status: %w", err) }