From 9b4adb7d422e60d4d255589b958f95af0191b82e Mon Sep 17 00:00:00 2001 From: Quentin David Date: Thu, 18 Dec 2025 11:03:26 +0100 Subject: [PATCH 1/4] chore(payments): Add version structure with minor --- cmd/payments/accounts/create.go | 2 +- cmd/payments/bankaccounts/create.go | 4 +- cmd/payments/bankaccounts/forward.go | 6 +- cmd/payments/bankaccounts/list.go | 4 +- cmd/payments/bankaccounts/show.go | 4 +- cmd/payments/bankaccounts/update_metadata.go | 4 +- cmd/payments/connectors/configs/adyen.go | 2 +- cmd/payments/connectors/configs/atlar.go | 2 +- .../connectors/configs/bankingcircle.go | 2 +- .../connectors/configs/currencycloud.go | 2 +- cmd/payments/connectors/configs/getconfig.go | 2 +- cmd/payments/connectors/configs/mangopay.go | 2 +- cmd/payments/connectors/configs/modulr.go | 2 +- cmd/payments/connectors/configs/moneycorp.go | 2 +- cmd/payments/connectors/configs/stripe.go | 2 +- cmd/payments/connectors/configs/wise.go | 2 +- cmd/payments/connectors/install/column.go | 2 +- cmd/payments/connectors/install/qonto.go | 2 +- cmd/payments/connectors/list.go | 6 +- cmd/payments/connectors/uninstall.go | 4 +- cmd/payments/payments/create.go | 2 +- cmd/payments/pools/add_accounts.go | 2 +- cmd/payments/pools/create.go | 2 +- cmd/payments/pools/delete.go | 2 +- cmd/payments/pools/list.go | 2 +- cmd/payments/pools/remove_account.go | 2 +- cmd/payments/pools/show.go | 2 +- cmd/payments/tasks/show.go | 2 +- cmd/payments/transferinitiation/approve.go | 2 +- cmd/payments/transferinitiation/create.go | 2 +- cmd/payments/transferinitiation/delete.go | 2 +- cmd/payments/transferinitiation/list.go | 2 +- cmd/payments/transferinitiation/reject.go | 2 +- cmd/payments/transferinitiation/retry.go | 2 +- cmd/payments/transferinitiation/reverse.go | 2 +- cmd/payments/transferinitiation/show.go | 2 +- .../transferinitiation/update_status.go | 2 +- cmd/payments/versions/versions.go | 57 +++++++++++++++---- membershipclient/go.mod | 2 +- membershipclient/go.sum | 1 + 40 files changed, 93 insertions(+), 59 deletions(-) diff --git a/cmd/payments/accounts/create.go b/cmd/payments/accounts/create.go index 5de90213..41575b9e 100644 --- a/cmd/payments/accounts/create.go +++ b/cmd/payments/accounts/create.go @@ -59,7 +59,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("accounts creation are only supported in >= v1.0.0") } diff --git a/cmd/payments/bankaccounts/create.go b/cmd/payments/bankaccounts/create.go index 05d1a6cc..3a1f66fe 100644 --- a/cmd/payments/bankaccounts/create.go +++ b/cmd/payments/bankaccounts/create.go @@ -60,7 +60,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("bank accounts are only supported in >= v1.0.0") } @@ -73,7 +73,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion >= versions.V3 { + if c.PaymentsVersion.Major >= versions.V3 { request := shared.V3CreateBankAccountRequest{} if err := json.Unmarshal([]byte(script), &request); err != nil { return nil, err diff --git a/cmd/payments/bankaccounts/forward.go b/cmd/payments/bankaccounts/forward.go index 12d2fa83..3e25f3e6 100644 --- a/cmd/payments/bankaccounts/forward.go +++ b/cmd/payments/bankaccounts/forward.go @@ -65,7 +65,7 @@ func (c *ForwardController) Run(cmd *cobra.Command, args []string) (fctl.Rendera return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("bank accounts are only supported in >= v1.0.0") } @@ -83,7 +83,7 @@ func (c *ForwardController) Run(cmd *cobra.Command, args []string) (fctl.Rendera return nil, errors.New("connector ID is required") } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { //nolint:gosimple response, err := store.Client().Payments.V1.ForwardBankAccount(cmd.Context(), operations.ForwardBankAccountRequest{ ForwardBankAccountRequest: shared.ForwardBankAccountRequest{ @@ -124,7 +124,7 @@ func (c *ForwardController) Run(cmd *cobra.Command, args []string) (fctl.Rendera } func (c *ForwardController) Render(cmd *cobra.Command, args []string) error { - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { pterm.Success.WithWriter(cmd.OutOrStdout()).Printfln("Bank Account %s forwarded to connector %s", c.store.BankAccountID, c.store.ConnectorID) return nil } diff --git a/cmd/payments/bankaccounts/list.go b/cmd/payments/bankaccounts/list.go index 3a74005a..3236c65a 100644 --- a/cmd/payments/bankaccounts/list.go +++ b/cmd/payments/bankaccounts/list.go @@ -59,7 +59,7 @@ func (c *ListController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("bank accounts are only supported in >= v1.0.0") } @@ -73,7 +73,7 @@ func (c *ListController) Run(cmd *cobra.Command, args []string) (fctl.Renderable pageSize = fctl.Ptr(int64(ps)) } - if c.PaymentsVersion >= versions.V3 { + if c.PaymentsVersion.Major >= versions.V3 { return c.v3list(cmd, store, cursor, pageSize) } diff --git a/cmd/payments/bankaccounts/show.go b/cmd/payments/bankaccounts/show.go index 2e9437f0..8bf31cc2 100644 --- a/cmd/payments/bankaccounts/show.go +++ b/cmd/payments/bankaccounts/show.go @@ -60,11 +60,11 @@ func (c *ShowController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("bank accounts are only supported in >= v1.0.0") } - if c.PaymentsVersion >= versions.V3 { + if c.PaymentsVersion.Major >= versions.V3 { response, err := store.Client().Payments.V3.GetBankAccount(cmd.Context(), operations.V3GetBankAccountRequest{ BankAccountID: args[0], }) diff --git a/cmd/payments/bankaccounts/update_metadata.go b/cmd/payments/bankaccounts/update_metadata.go index 540aaa22..caaff1c5 100644 --- a/cmd/payments/bankaccounts/update_metadata.go +++ b/cmd/payments/bankaccounts/update_metadata.go @@ -60,7 +60,7 @@ func (c *UpdateMetadataController) Run(cmd *cobra.Command, args []string) (fctl. return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("bank accounts are only supported in >= v1.0.0") } @@ -74,7 +74,7 @@ func (c *UpdateMetadataController) Run(cmd *cobra.Command, args []string) (fctl. if !fctl.CheckStackApprobation(cmd, store.Stack(), "You are about to set a metadata on bank account '%s'", bankAccountID) { return nil, fctl.ErrMissingApproval } - if c.PaymentsVersion >= versions.V3 { + if c.PaymentsVersion.Major >= versions.V3 { request := operations.V3UpdateBankAccountMetadataRequest{ V3UpdateBankAccountMetadataRequest: &shared.V3UpdateBankAccountMetadataRequest{ Metadata: metadata, diff --git a/cmd/payments/connectors/configs/adyen.go b/cmd/payments/connectors/configs/adyen.go index 75917eda..4462d661 100644 --- a/cmd/payments/connectors/configs/adyen.go +++ b/cmd/payments/connectors/configs/adyen.go @@ -70,7 +70,7 @@ func (c *UpdateAdyenConnectorConfigController) Run(cmd *cobra.Command, args []st return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/atlar.go b/cmd/payments/connectors/configs/atlar.go index a880bf6a..2d2f550e 100644 --- a/cmd/payments/connectors/configs/atlar.go +++ b/cmd/payments/connectors/configs/atlar.go @@ -70,7 +70,7 @@ func (c *UpdateAtlarConnectorConfigController) Run(cmd *cobra.Command, args []st return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/bankingcircle.go b/cmd/payments/connectors/configs/bankingcircle.go index 95f57276..470c31eb 100644 --- a/cmd/payments/connectors/configs/bankingcircle.go +++ b/cmd/payments/connectors/configs/bankingcircle.go @@ -70,7 +70,7 @@ func (c *UpdateBankingCircleConnectorConfigController) Run(cmd *cobra.Command, a return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/currencycloud.go b/cmd/payments/connectors/configs/currencycloud.go index f0dd26cb..6fd35677 100644 --- a/cmd/payments/connectors/configs/currencycloud.go +++ b/cmd/payments/connectors/configs/currencycloud.go @@ -70,7 +70,7 @@ func (c *UpdateCurrencyCloudConnectorConfigController) Run(cmd *cobra.Command, a return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/getconfig.go b/cmd/payments/connectors/configs/getconfig.go index cf8e3400..7adb59c6 100644 --- a/cmd/payments/connectors/configs/getconfig.go +++ b/cmd/payments/connectors/configs/getconfig.go @@ -77,7 +77,7 @@ func (c *PaymentsGetConfigController) Run(cmd *cobra.Command, args []string) (fc provider := fctl.GetString(cmd, c.providerNameFlag) connectorID := fctl.GetString(cmd, c.connectorIDFlag) - switch c.PaymentsVersion { + switch c.PaymentsVersion.Major { case versions.V0: if provider == "" { return nil, fmt.Errorf("provider is required") diff --git a/cmd/payments/connectors/configs/mangopay.go b/cmd/payments/connectors/configs/mangopay.go index 867a1591..d95c28ff 100644 --- a/cmd/payments/connectors/configs/mangopay.go +++ b/cmd/payments/connectors/configs/mangopay.go @@ -70,7 +70,7 @@ func (c *UpdateMangopayConnectorConfigController) Run(cmd *cobra.Command, args [ return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/modulr.go b/cmd/payments/connectors/configs/modulr.go index f85b5a5d..18a6f3a4 100644 --- a/cmd/payments/connectors/configs/modulr.go +++ b/cmd/payments/connectors/configs/modulr.go @@ -70,7 +70,7 @@ func (c *UpdateModulrConnectorConfigController) Run(cmd *cobra.Command, args []s return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/moneycorp.go b/cmd/payments/connectors/configs/moneycorp.go index 947b2ec7..ce872af1 100644 --- a/cmd/payments/connectors/configs/moneycorp.go +++ b/cmd/payments/connectors/configs/moneycorp.go @@ -70,7 +70,7 @@ func (c *UpdateMoneycorpConnectorConfigController) Run(cmd *cobra.Command, args return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/stripe.go b/cmd/payments/connectors/configs/stripe.go index dbc9c7bc..2c95cc53 100644 --- a/cmd/payments/connectors/configs/stripe.go +++ b/cmd/payments/connectors/configs/stripe.go @@ -71,7 +71,7 @@ func (c *UpdateStripeConnectorConfigController) Run(cmd *cobra.Command, args []s return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/configs/wise.go b/cmd/payments/connectors/configs/wise.go index 425548c1..12de5b2b 100644 --- a/cmd/payments/connectors/configs/wise.go +++ b/cmd/payments/connectors/configs/wise.go @@ -70,7 +70,7 @@ func (c *UpdateWiseConnectorConfigController) Run(cmd *cobra.Command, args []str return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("update configs are only supported in >= v1.0.0") } diff --git a/cmd/payments/connectors/install/column.go b/cmd/payments/connectors/install/column.go index aa73e1fa..d5d7acf5 100644 --- a/cmd/payments/connectors/install/column.go +++ b/cmd/payments/connectors/install/column.go @@ -64,7 +64,7 @@ func (c *PaymentsConnectorsColumnController) Run(cmd *cobra.Command, args []stri if err := versions.GetPaymentsVersion(cmd, args, c); err != nil { return nil, err } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { return nil, fmt.Errorf("column connector is only supported in version >= v3.0.0") } diff --git a/cmd/payments/connectors/install/qonto.go b/cmd/payments/connectors/install/qonto.go index a44660d9..7fbb54f4 100644 --- a/cmd/payments/connectors/install/qonto.go +++ b/cmd/payments/connectors/install/qonto.go @@ -62,7 +62,7 @@ func (c *PaymentsConnectorsQontoController) Run(cmd *cobra.Command, args []strin if err := versions.GetPaymentsVersion(cmd, args, c); err != nil { return nil, err } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { return nil, fmt.Errorf("qonto connector is only supported in version >= v3.0.0") } diff --git a/cmd/payments/connectors/list.go b/cmd/payments/connectors/list.go index a628c1d8..cd43c4c3 100644 --- a/cmd/payments/connectors/list.go +++ b/cmd/payments/connectors/list.go @@ -72,7 +72,7 @@ func (c *PaymentsConnectorsListController) Run(cmd *cobra.Command, args []string pageSizeAsInt := int64(fctl.GetInt(cmd, c.pageSizeFlag)) - switch c.PaymentsVersion { + switch c.PaymentsVersion.Major { case versions.V3: response, err := store.Client().Payments.V3.ListConnectors(cmd.Context(), operations.V3ListConnectorsRequest{ PageSize: &pageSizeAsInt, @@ -120,7 +120,7 @@ func (c *PaymentsConnectorsListController) Run(cmd *cobra.Command, args []string func (c *PaymentsConnectorsListController) Render(cmd *cobra.Command, args []string) error { tableData := fctl.Map(c.store.Connectors, func(connector ConnectorData) []string { - if c.PaymentsVersion >= versions.V1 { + if c.PaymentsVersion.Major >= versions.V1 { return []string{ connector.Provider, connector.Name, @@ -134,7 +134,7 @@ func (c *PaymentsConnectorsListController) Render(cmd *cobra.Command, args []str } }) - if c.PaymentsVersion >= versions.V1 { + if c.PaymentsVersion.Major >= versions.V1 { tableData = fctl.Prepend(tableData, []string{"Provider", "Name", "ConnectorID"}) } else { tableData = fctl.Prepend(tableData, []string{"Provider"}) diff --git a/cmd/payments/connectors/uninstall.go b/cmd/payments/connectors/uninstall.go index ad807de0..ee7079dc 100644 --- a/cmd/payments/connectors/uninstall.go +++ b/cmd/payments/connectors/uninstall.go @@ -83,7 +83,7 @@ func (c *PaymentsConnectorsUninstallController) Run(cmd *cobra.Command, args []s provider := fctl.GetString(cmd, c.providerFlag) connectorID := fctl.GetString(cmd, c.connectorIDFlag) - switch c.PaymentsVersion { + switch c.PaymentsVersion.Major { case versions.V3: if connectorID == "" { return nil, fmt.Errorf("missing connector ID") @@ -162,7 +162,7 @@ func (c *PaymentsConnectorsUninstallController) Run(cmd *cobra.Command, args []s // TODO: This need to use the ui.NewListModel func (c *PaymentsConnectorsUninstallController) Render(cmd *cobra.Command, args []string) error { - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { pterm.Success.WithWriter(cmd.OutOrStdout()).Printfln("Connector '%s' uninstalled!", c.store.Connector) return nil } diff --git a/cmd/payments/payments/create.go b/cmd/payments/payments/create.go index 8373bead..2cf76182 100644 --- a/cmd/payments/payments/create.go +++ b/cmd/payments/payments/create.go @@ -59,7 +59,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("payment creation are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/add_accounts.go b/cmd/payments/pools/add_accounts.go index 4ae3b8d6..d368e176 100644 --- a/cmd/payments/pools/add_accounts.go +++ b/cmd/payments/pools/add_accounts.go @@ -62,7 +62,7 @@ func (c *AddAccountController) Run(cmd *cobra.Command, args []string) (fctl.Rend return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/create.go b/cmd/payments/pools/create.go index 9c306844..35e79daf 100644 --- a/cmd/payments/pools/create.go +++ b/cmd/payments/pools/create.go @@ -59,7 +59,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/delete.go b/cmd/payments/pools/delete.go index 80618672..2e2e99ac 100644 --- a/cmd/payments/pools/delete.go +++ b/cmd/payments/pools/delete.go @@ -61,7 +61,7 @@ func (c *DeleteController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/list.go b/cmd/payments/pools/list.go index 6d7ca11e..bdf2c352 100644 --- a/cmd/payments/pools/list.go +++ b/cmd/payments/pools/list.go @@ -59,7 +59,7 @@ func (c *ListController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/remove_account.go b/cmd/payments/pools/remove_account.go index 475a2836..aeabf24d 100644 --- a/cmd/payments/pools/remove_account.go +++ b/cmd/payments/pools/remove_account.go @@ -61,7 +61,7 @@ func (c *RemoveAccountController) Run(cmd *cobra.Command, args []string) (fctl.R return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/pools/show.go b/cmd/payments/pools/show.go index fe00f6cd..2f927a91 100644 --- a/cmd/payments/pools/show.go +++ b/cmd/payments/pools/show.go @@ -61,7 +61,7 @@ func (c *ShowController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("pools are only supported in >= v1.0.0") } diff --git a/cmd/payments/tasks/show.go b/cmd/payments/tasks/show.go index f99d5843..499adb7a 100644 --- a/cmd/payments/tasks/show.go +++ b/cmd/payments/tasks/show.go @@ -60,7 +60,7 @@ func (c *ShowController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { return nil, fmt.Errorf("tasks are only supported in >= v3.0.0") } diff --git a/cmd/payments/transferinitiation/approve.go b/cmd/payments/transferinitiation/approve.go index 6e09455a..0ca0ebaf 100644 --- a/cmd/payments/transferinitiation/approve.go +++ b/cmd/payments/transferinitiation/approve.go @@ -61,7 +61,7 @@ func (c *ApproveController) Run(cmd *cobra.Command, args []string) (fctl.Rendera return nil, err } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { return nil, fmt.Errorf("transfer initiation approval is only supported in >= v3.0.0") } diff --git a/cmd/payments/transferinitiation/create.go b/cmd/payments/transferinitiation/create.go index e7f64fc7..117a2a76 100644 --- a/cmd/payments/transferinitiation/create.go +++ b/cmd/payments/transferinitiation/create.go @@ -59,7 +59,7 @@ func (c *CreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/delete.go b/cmd/payments/transferinitiation/delete.go index 759d2f3a..0709744e 100644 --- a/cmd/payments/transferinitiation/delete.go +++ b/cmd/payments/transferinitiation/delete.go @@ -60,7 +60,7 @@ func (c *DeleteController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/list.go b/cmd/payments/transferinitiation/list.go index 6c56a966..77ab35be 100644 --- a/cmd/payments/transferinitiation/list.go +++ b/cmd/payments/transferinitiation/list.go @@ -58,7 +58,7 @@ func (c *ListController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/reject.go b/cmd/payments/transferinitiation/reject.go index 4854277a..7cebd631 100644 --- a/cmd/payments/transferinitiation/reject.go +++ b/cmd/payments/transferinitiation/reject.go @@ -61,7 +61,7 @@ func (c *RejectController) Run(cmd *cobra.Command, args []string) (fctl.Renderab return nil, err } - if c.PaymentsVersion < versions.V3 { + if c.PaymentsVersion.Major < versions.V3 { return nil, fmt.Errorf("transfer initiation rejection is only supported in >= v3.0.0") } diff --git a/cmd/payments/transferinitiation/retry.go b/cmd/payments/transferinitiation/retry.go index 9b40b9fd..74afbdb1 100644 --- a/cmd/payments/transferinitiation/retry.go +++ b/cmd/payments/transferinitiation/retry.go @@ -60,7 +60,7 @@ func (c *RetryController) Run(cmd *cobra.Command, args []string) (fctl.Renderabl return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/reverse.go b/cmd/payments/transferinitiation/reverse.go index 4300026e..a82542be 100644 --- a/cmd/payments/transferinitiation/reverse.go +++ b/cmd/payments/transferinitiation/reverse.go @@ -62,7 +62,7 @@ func (c *ReverseController) Run(cmd *cobra.Command, args []string) (fctl.Rendera return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/show.go b/cmd/payments/transferinitiation/show.go index 7e812bf3..52c3771b 100644 --- a/cmd/payments/transferinitiation/show.go +++ b/cmd/payments/transferinitiation/show.go @@ -60,7 +60,7 @@ func (c *ShowController) Run(cmd *cobra.Command, args []string) (fctl.Renderable return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation are only supported in >= v1.0.0") } diff --git a/cmd/payments/transferinitiation/update_status.go b/cmd/payments/transferinitiation/update_status.go index e06e2189..7b447047 100644 --- a/cmd/payments/transferinitiation/update_status.go +++ b/cmd/payments/transferinitiation/update_status.go @@ -63,7 +63,7 @@ func (c *UpdateStatusController) Run(cmd *cobra.Command, args []string) (fctl.Re return nil, err } - if c.PaymentsVersion < versions.V1 { + if c.PaymentsVersion.Major < versions.V1 { return nil, fmt.Errorf("transfer initiation updates are only supported in >= v2.0.0") } diff --git a/cmd/payments/versions/versions.go b/cmd/payments/versions/versions.go index 122cf3ee..a3190a61 100644 --- a/cmd/payments/versions/versions.go +++ b/cmd/payments/versions/versions.go @@ -2,6 +2,9 @@ package versions import ( "fmt" + "math" + "strconv" + "strings" "github.com/spf13/cobra" "golang.org/x/mod/semver" @@ -9,15 +12,21 @@ import ( fctl "github.com/formancehq/fctl/pkg" ) -type Version int +type PaymentMajorVersion int const ( - V0 Version = iota + V0 PaymentMajorVersion = iota V1 V2 V3 ) +type Version struct { + Major PaymentMajorVersion + Minor int + Raw string +} + type VersionController interface { SetVersion(Version) } @@ -35,19 +44,43 @@ func GetPaymentsVersion(cmd *cobra.Command, args []string, controller VersionCon version := "v" + *response.PaymentsServerInfo.Version - if !semver.IsValid(version) { - // last version for commits - controller.SetVersion(V3) - return nil + paymentVersion, err := computePaymentVersion(version) + if err != nil { + return err } - res := semver.Compare(version, "v3.0.0-rc.1") - switch res { - case 0, 1: - controller.SetVersion(V3) + controller.SetVersion(*paymentVersion) + return nil +} + +func computePaymentVersion(rawVersion string) (*Version, error) { + semverVersion := semver.MajorMinor(rawVersion) + if semverVersion == "" { + // we assume the version is a commit id + // thus corresponds to the latest possible version + return &Version{Major: V3, Minor: math.MaxInt, Raw: rawVersion}, nil + } + + parts := strings.Split(semver.Canonical(semverVersion), ".") + if len(parts) < 2 { + return nil, fmt.Errorf("expected both major and minor for version string: %s", rawVersion) + } + + var major PaymentMajorVersion + minor, _ := strconv.Atoi(parts[1]) + + switch parts[0] { + case "v0", "v1", "v2": + major = V1 + case "v3": + major = V3 default: - controller.SetVersion(V1) + return nil, fmt.Errorf("invalid major version string: %s", rawVersion) } - return nil + return &Version{ + Major: major, + Minor: minor, + Raw: rawVersion, + }, nil } diff --git a/membershipclient/go.mod b/membershipclient/go.mod index 20bc10af..8e1905a4 100644 --- a/membershipclient/go.mod +++ b/membershipclient/go.mod @@ -1,6 +1,6 @@ module github.com/formancehq/fctl/membershipclient -go 1.23 +go 1.23.0 require ( github.com/stretchr/testify v1.10.0 diff --git a/membershipclient/go.sum b/membershipclient/go.sum index c97062a6..25ed05cf 100644 --- a/membershipclient/go.sum +++ b/membershipclient/go.sum @@ -1,6 +1,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= From 3098694ed41b6990b04bd1fe0753b7518262d61e Mon Sep 17 00:00:00 2001 From: Quentin David Date: Thu, 18 Dec 2025 11:04:46 +0100 Subject: [PATCH 2/4] Remove membershipclient files --- membershipclient/go.mod | 9 --------- membershipclient/go.sum | 16 ---------------- 2 files changed, 25 deletions(-) delete mode 100644 membershipclient/go.mod delete mode 100644 membershipclient/go.sum diff --git a/membershipclient/go.mod b/membershipclient/go.mod deleted file mode 100644 index 8e1905a4..00000000 --- a/membershipclient/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/formancehq/fctl/membershipclient - -go 1.23.0 - -require ( - github.com/stretchr/testify v1.10.0 - golang.org/x/oauth2 v0.27.0 - gopkg.in/validator.v2 v2.0.1 -) diff --git a/membershipclient/go.sum b/membershipclient/go.sum deleted file mode 100644 index 25ed05cf..00000000 --- a/membershipclient/go.sum +++ /dev/null @@ -1,16 +0,0 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= -golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY= -gopkg.in/validator.v2 v2.0.1/go.mod h1:lIUZBlB3Im4s/eYp39Ry/wkR02yOPhZ9IwIRBjuPuG8= From 5e0471ccbb45d4fa4666d3d74f9872c404c178fa Mon Sep 17 00:00:00 2001 From: Quentin David Date: Thu, 18 Dec 2025 11:05:29 +0100 Subject: [PATCH 3/4] Revert "Remove membershipclient files" This reverts commit 3098694ed41b6990b04bd1fe0753b7518262d61e. --- membershipclient/go.mod | 9 +++++++++ membershipclient/go.sum | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 membershipclient/go.mod create mode 100644 membershipclient/go.sum diff --git a/membershipclient/go.mod b/membershipclient/go.mod new file mode 100644 index 00000000..8e1905a4 --- /dev/null +++ b/membershipclient/go.mod @@ -0,0 +1,9 @@ +module github.com/formancehq/fctl/membershipclient + +go 1.23.0 + +require ( + github.com/stretchr/testify v1.10.0 + golang.org/x/oauth2 v0.27.0 + gopkg.in/validator.v2 v2.0.1 +) diff --git a/membershipclient/go.sum b/membershipclient/go.sum new file mode 100644 index 00000000..25ed05cf --- /dev/null +++ b/membershipclient/go.sum @@ -0,0 +1,16 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY= +gopkg.in/validator.v2 v2.0.1/go.mod h1:lIUZBlB3Im4s/eYp39Ry/wkR02yOPhZ9IwIRBjuPuG8= From 3d02ccb4f4fa3fc0f5e2a36ede38fb0182b070b4 Mon Sep 17 00:00:00 2001 From: Quentin David Date: Thu, 18 Dec 2025 11:12:01 +0100 Subject: [PATCH 4/4] Run go mod tidy in membershipclient --- membershipclient/go.mod | 1 - membershipclient/go.sum | 20 ++++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/membershipclient/go.mod b/membershipclient/go.mod index 8e1905a4..fa211dc2 100644 --- a/membershipclient/go.mod +++ b/membershipclient/go.mod @@ -3,7 +3,6 @@ module github.com/formancehq/fctl/membershipclient go 1.23.0 require ( - github.com/stretchr/testify v1.10.0 golang.org/x/oauth2 v0.27.0 gopkg.in/validator.v2 v2.0.1 ) diff --git a/membershipclient/go.sum b/membershipclient/go.sum index 25ed05cf..0f828394 100644 --- a/membershipclient/go.sum +++ b/membershipclient/go.sum @@ -1,16 +1,12 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/validator.v2 v2.0.1 h1:xF0KWyGWXm/LM2G1TrEjqOu4pa6coO9AlWSf3msVfDY= gopkg.in/validator.v2 v2.0.1/go.mod h1:lIUZBlB3Im4s/eYp39Ry/wkR02yOPhZ9IwIRBjuPuG8=