diff --git a/CHANGELOG.md b/CHANGELOG.md index dc2a2ed1b..b106a62d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ ** fix(README): missing version bump to 1.50 in the tweet command * fix(backups-create): returns an error when the backup fails * fix(dbng): error wrapping for destroy +* feat(cmd): add `router-multipart-upload` to enable/disable multipart upload on the application router +* chore(deps): update go-scalingo to add `AppsRouterEnableMultipartUpload` and `AppsRouterDisableMultipartUpload` ## 1.50.0 diff --git a/README.md b/README.md index a570adc19..e2bf45e6e 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ COMMANDS: force-https Enable/Disable automatic redirection of traffic to HTTPS for your application sticky-session Enable/Disable sticky sessions for your application router-logs Enable/disable router logs for your application + router-multipart-upload Enable/disable multipart upload on the router for your application set-canonical-domain Set a canonical domain. unset-canonical-domain Unset a canonical domain. db-tunnel Create an encrypted connection to access your database diff --git a/apps/routing_settings.go b/apps/routing_settings.go index 5df7fbd67..191229767 100644 --- a/apps/routing_settings.go +++ b/apps/routing_settings.go @@ -78,6 +78,28 @@ func RouterLogs(ctx context.Context, appName string, enable bool) error { return nil } +func RouterMultipartUpload(ctx context.Context, appName string, enable bool) error { + c, err := config.ScalingoClient(ctx) + if err != nil { + return errors.Wrapf(ctx, err, "get Scalingo client") + } + + var action string + if enable { + action = "enable" + _, err = c.AppsRouterEnableMultipartUpload(ctx, appName) + } else { + action = "disable" + _, err = c.AppsRouterDisableMultipartUpload(ctx, appName) + } + if err != nil { + return errors.Wrapf(ctx, err, "configure router-multipart-upload feature") + } + + io.Statusf("Router multipart upload has been %sd on %s\n", action, appName) + return nil +} + func AppFirewallRulesList(ctx context.Context, appName string) error { c, err := config.ScalingoClient(ctx) if err != nil { diff --git a/cmd/commands.go b/cmd/commands.go index 453230240..b0a2388fc 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -194,6 +194,7 @@ var ( &forceHTTPSCommand, &stickySessionCommand, &routerLogsCommand, + &routerMultipartUploadCommand, &setCanonicalDomainCommand, &unsetCanonicalDomainCommand, diff --git a/cmd/routing_settings.go b/cmd/routing_settings.go index 2fc9adc1b..e048f00dc 100644 --- a/cmd/routing_settings.go +++ b/cmd/routing_settings.go @@ -120,6 +120,42 @@ var ( }, } + routerMultipartUploadCommand = cli.Command{ + Name: "router-multipart-upload", + Category: "App Management", + Usage: "Enable/disable multipart upload on the router for your application", + Flags: []cli.Flag{ + &appFlag, + &cli.BoolFlag{Name: "enable", Aliases: []string{"e"}, Usage: "Enable router multipart upload (default)"}, + &cli.BoolFlag{Name: "disable", Aliases: []string{"d"}, Usage: "Disable router multipart upload"}, + }, + Description: CommandDescription{ + Description: "When disabled, the router refuses all requests with a multipart body (403 Forbidden)", + Examples: []string{"scalingo --app my-app router-multipart-upload --disable"}, + }.Render(), + + Action: func(ctx context.Context, c *cli.Command) error { + currentApp := detect.CurrentApp(ctx, c) + if c.Args().Len() > 1 { + _ = cli.ShowCommandHelp(ctx, c, "router-multipart-upload") + return nil + } + + utils.CheckForConsent(ctx, currentApp, utils.ConsentTypeContainers) + + enable := !c.IsSet("disable") + + err := apps.RouterMultipartUpload(ctx, currentApp, enable) + if err != nil { + errorQuit(ctx, err) + } + return nil + }, + ShellComplete: func(_ context.Context, c *cli.Command) { + _ = autocomplete.CmdFlagsAutoComplete(c, "router-multipart-upload") + }, + } + appFirewallRulesCommand = cli.Command{ Name: "app-firewall-rules", //nolint: goconst Category: "App Management", diff --git a/go.mod b/go.mod index a55bf0ef4..a2bbb350a 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.26.8 require ( charm.land/huh/v2 v2.0.3 - github.com/Scalingo/go-scalingo/v11 v11.8.0 + github.com/Scalingo/go-scalingo/v11 v11.8.1 github.com/Scalingo/go-utils/errors/v3 v3.2.1 github.com/Scalingo/go-utils/logger v1.13.0 github.com/Scalingo/go-utils/pagination v1.2.0 @@ -27,7 +27,7 @@ require ( go.uber.org/mock v0.6.0 golang.org/x/crypto v0.57.0 golang.org/x/term v0.46.0 - golang.org/x/text v0.42.0 + golang.org/x/text v0.43.0 ) require ( @@ -81,7 +81,7 @@ require ( github.com/xo/terminfo v1.2.0 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/net v0.58.0 // indirect - golang.org/x/sync v0.23.0 // indirect + golang.org/x/sync v0.24.0 // indirect golang.org/x/sys v0.48.0 // indirect gopkg.in/errgo.v1 v1.0.1 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect diff --git a/go.sum b/go.sum index bcfe16b0f..35282824e 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/ProtonMail/go-crypto v1.5.2 h1:cucYnvqcY7UOXVD//mSyjeaPY0SSN3v5cDkYPxumINk= github.com/ProtonMail/go-crypto v1.5.2/go.mod h1:/RaSu30DaKO4RY+XdV/ACcCcZkGr7AhUIduq5sjzzCo= -github.com/Scalingo/go-scalingo/v11 v11.8.0 h1:dzekN/F5izfoUx1kfB/4+IYF76tu9ULXNXQFw+3bAak= -github.com/Scalingo/go-scalingo/v11 v11.8.0/go.mod h1:CFTjdLuGJyCg0b1WShTbKC1cjbczj5kpGT55pUXZj0k= +github.com/Scalingo/go-scalingo/v11 v11.8.1 h1:mukF8XVwIJKNzrzNRWaEUqXbRTM4TYsmEpwehLNYV9g= +github.com/Scalingo/go-scalingo/v11 v11.8.1/go.mod h1:CFTjdLuGJyCg0b1WShTbKC1cjbczj5kpGT55pUXZj0k= github.com/Scalingo/go-utils/errors/v3 v3.2.1 h1:2w3qUz6MxJa3aqx/biz2G3JquSKsFnfz/E7wrNf/LPc= github.com/Scalingo/go-utils/errors/v3 v3.2.1/go.mod h1:jVVNoOdYFjuNkR/BeEZWNWJVvu4jmyLY4udlsQQyBss= github.com/Scalingo/go-utils/logger v1.13.0 h1:3dW2hDo50Oqvdoi1iEFXX0GRRKLvjJLeV68ooObHLmY= @@ -197,8 +197,8 @@ golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aI golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= -golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= -golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA= +golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -212,8 +212,8 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE= golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= -golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= +golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc= +golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md b/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md index fafa5d309..158a04e36 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md +++ b/vendor/github.com/Scalingo/go-scalingo/v11/CHANGELOG.md @@ -2,6 +2,10 @@ ## To Be Released +## 11.8.1 + +* feat(apps): add `AppsRouterDisableMultipartUpload` and `AppsRouterEnableMultipartUpload` methods and `RouterDisableMultipartUpload` field on `App` + ## 11.8.0 * fix(events): stop formatting backup tool statuses in continuous backup events, display the status and error returned by the API diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/README.md b/vendor/github.com/Scalingo/go-scalingo/v11/README.md index 602a77445..11d9c15eb 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/README.md +++ b/vendor/github.com/Scalingo/go-scalingo/v11/README.md @@ -1,4 +1,4 @@ -# Go client for Scalingo API v11.8.0 +# Go client for Scalingo API v11.8.1 This repository is the Go client for the [Scalingo APIs](https://developers.scalingo.com/). @@ -81,7 +81,7 @@ Bump new version number in: Commit, tag and create a new release: ```sh -version="11.8.0" +version="11.8.1" git switch --create release/${version} git add CHANGELOG.md README.md version.go diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/apps.go b/vendor/github.com/Scalingo/go-scalingo/v11/apps.go index 6031b10e5..cf1b5b719 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/apps.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/apps.go @@ -41,6 +41,8 @@ type AppsService interface { AppsFirewallRuleDelete(ctx context.Context, name string, ruleID string) error AppsStickySession(ctx context.Context, name string, enable bool) (*App, error) AppsRouterLogs(ctx context.Context, name string, enable bool) (*App, error) + AppsRouterDisableMultipartUpload(ctx context.Context, name string) (*App, error) + AppsRouterEnableMultipartUpload(ctx context.Context, name string) (*App, error) } var _ AppsService = (*Client)(nil) @@ -125,29 +127,30 @@ type AppLinks struct { } type App struct { - ID string `json:"id"` - Name string `json:"name"` - Region string `json:"region"` - Owner Owner `json:"owner"` - GitURL string `json:"git_url"` - URL string `json:"url"` - BaseURL string `json:"base_url"` - Status AppStatus `json:"status"` - LastDeployedAt *time.Time `json:"last_deployed_at"` - LastDeployedBy string `json:"last_deployed_by"` - CreatedAt *time.Time `json:"created_at"` - UpdatedAt *time.Time `json:"updated_at"` - Links *AppLinks `json:"links"` - StackID string `json:"stack_id"` - StickySession bool `json:"sticky_session"` - ForceHTTPS bool `json:"force_https"` - RouterLogs bool `json:"router_logs"` - DataAccessConsent *DataAccessConsent `json:"data_access_consent,omitempty"` - Flags map[string]bool `json:"flags"` - Limits map[string]any `json:"limits"` - HDSResource bool `json:"hds_resource"` - PrivateNetworksIDs []string `json:"private_networks_ids"` - Project appProject `json:"project"` + ID string `json:"id"` + Name string `json:"name"` + Region string `json:"region"` + Owner Owner `json:"owner"` + GitURL string `json:"git_url"` + URL string `json:"url"` + BaseURL string `json:"base_url"` + Status AppStatus `json:"status"` + LastDeployedAt *time.Time `json:"last_deployed_at"` + LastDeployedBy string `json:"last_deployed_by"` + CreatedAt *time.Time `json:"created_at"` + UpdatedAt *time.Time `json:"updated_at"` + Links *AppLinks `json:"links"` + StackID string `json:"stack_id"` + StickySession bool `json:"sticky_session"` + ForceHTTPS bool `json:"force_https"` + RouterLogs bool `json:"router_logs"` + RouterDisableMultipartUpload bool `json:"router_disable_multipart_upload"` + DataAccessConsent *DataAccessConsent `json:"data_access_consent,omitempty"` + Flags map[string]bool `json:"flags"` + Limits map[string]any `json:"limits"` + HDSResource bool `json:"hds_resource"` + PrivateNetworksIDs []string `json:"private_networks_ids"` + Project appProject `json:"project"` } // appProject is a partial copy of the type `Project` in `projects.go` @@ -439,6 +442,20 @@ func (c *Client) AppsRouterLogs(ctx context.Context, name string, enable bool) ( }) } +// AppsRouterDisableMultipartUpload makes the router refuse requests with a multipart body for the given application. +func (c *Client) AppsRouterDisableMultipartUpload(ctx context.Context, name string) (*App, error) { + return c.appsUpdate(ctx, name, map[string]any{ + "router_disable_multipart_upload": true, + }) +} + +// AppsRouterEnableMultipartUpload makes the router accept requests with a multipart body for the given application. +func (c *Client) AppsRouterEnableMultipartUpload(ctx context.Context, name string) (*App, error) { + return c.appsUpdate(ctx, name, map[string]any{ + "router_disable_multipart_upload": false, + }) +} + func (c *Client) AppsStickySession(ctx context.Context, name string, enable bool) (*App, error) { return c.appsUpdate(ctx, name, map[string]any{ "sticky_session": enable, diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/mocks_sig.json b/vendor/github.com/Scalingo/go-scalingo/v11/mocks_sig.json index ba9d8bdf0..58a23610b 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/mocks_sig.json +++ b/vendor/github.com/Scalingo/go-scalingo/v11/mocks_sig.json @@ -3,7 +3,7 @@ "..AddonProvidersService": "f0 56 1c c9 ae 9b 6e a5 2f 98 fa 72 1f a2 f0 e6 a7 23 b4 4c", "..AddonsService": "e5 fd 9a 36 39 fc 08 7d 37 ef 0d a9 5c a5 ba dc 53 db e8 39", "..AlertsService": "31 44 7d d3 3f 5b 0b 61 26 03 79 65 a2 16 77 a1 66 66 e8 05", - "..AppsService": "8c c3 fd a4 f9 07 58 26 16 eb df 38 83 49 ea 10 78 32 fe ca", + "..AppsService": "e9 80 b8 c0 f0 ae e6 01 5b 5b fb 6d e8 77 91 d6 f7 89 4c 6a", "..AutoscalersService": "9f cf 1b 7a dc 9d e3 d3 62 89 41 0f d4 30 83 28 7b 40 f1 72", "..BackupsService": "66 59 74 49 68 65 69 e4 b0 97 8e a2 45 e6 ff fc 71 85 06 16", "..CollaboratorsService": "c9 3a 93 de 00 2d e8 87 9c cc bd 3f f0 0e a1 48 78 a4 d7 3a", diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/api_mock.go b/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/api_mock.go index 601d73fab..6d831ddf8 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/api_mock.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/api_mock.go @@ -427,6 +427,36 @@ func (mr *MockAPIMockRecorder) AppsRestart(ctx, app, scope any) *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRestart", reflect.TypeOf((*MockAPI)(nil).AppsRestart), ctx, app, scope) } +// AppsRouterDisableMultipartUpload mocks base method. +func (m *MockAPI) AppsRouterDisableMultipartUpload(ctx context.Context, name string) (*scalingo.App, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AppsRouterDisableMultipartUpload", ctx, name) + ret0, _ := ret[0].(*scalingo.App) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AppsRouterDisableMultipartUpload indicates an expected call of AppsRouterDisableMultipartUpload. +func (mr *MockAPIMockRecorder) AppsRouterDisableMultipartUpload(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRouterDisableMultipartUpload", reflect.TypeOf((*MockAPI)(nil).AppsRouterDisableMultipartUpload), ctx, name) +} + +// AppsRouterEnableMultipartUpload mocks base method. +func (m *MockAPI) AppsRouterEnableMultipartUpload(ctx context.Context, name string) (*scalingo.App, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AppsRouterEnableMultipartUpload", ctx, name) + ret0, _ := ret[0].(*scalingo.App) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AppsRouterEnableMultipartUpload indicates an expected call of AppsRouterEnableMultipartUpload. +func (mr *MockAPIMockRecorder) AppsRouterEnableMultipartUpload(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRouterEnableMultipartUpload", reflect.TypeOf((*MockAPI)(nil).AppsRouterEnableMultipartUpload), ctx, name) +} + // AppsRouterLogs mocks base method. func (m *MockAPI) AppsRouterLogs(ctx context.Context, name string, enable bool) (*scalingo.App, error) { m.ctrl.T.Helper() diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/appsservice_mock.go b/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/appsservice_mock.go index a2ae5b364..6f31620aa 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/appsservice_mock.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/scalingomock/appsservice_mock.go @@ -214,6 +214,36 @@ func (mr *MockAppsServiceMockRecorder) AppsRestart(ctx, app, scope any) *gomock. return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRestart", reflect.TypeOf((*MockAppsService)(nil).AppsRestart), ctx, app, scope) } +// AppsRouterDisableMultipartUpload mocks base method. +func (m *MockAppsService) AppsRouterDisableMultipartUpload(ctx context.Context, name string) (*scalingo.App, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AppsRouterDisableMultipartUpload", ctx, name) + ret0, _ := ret[0].(*scalingo.App) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AppsRouterDisableMultipartUpload indicates an expected call of AppsRouterDisableMultipartUpload. +func (mr *MockAppsServiceMockRecorder) AppsRouterDisableMultipartUpload(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRouterDisableMultipartUpload", reflect.TypeOf((*MockAppsService)(nil).AppsRouterDisableMultipartUpload), ctx, name) +} + +// AppsRouterEnableMultipartUpload mocks base method. +func (m *MockAppsService) AppsRouterEnableMultipartUpload(ctx context.Context, name string) (*scalingo.App, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AppsRouterEnableMultipartUpload", ctx, name) + ret0, _ := ret[0].(*scalingo.App) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// AppsRouterEnableMultipartUpload indicates an expected call of AppsRouterEnableMultipartUpload. +func (mr *MockAppsServiceMockRecorder) AppsRouterEnableMultipartUpload(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AppsRouterEnableMultipartUpload", reflect.TypeOf((*MockAppsService)(nil).AppsRouterEnableMultipartUpload), ctx, name) +} + // AppsRouterLogs mocks base method. func (m *MockAppsService) AppsRouterLogs(ctx context.Context, name string, enable bool) (*scalingo.App, error) { m.ctrl.T.Helper() diff --git a/vendor/github.com/Scalingo/go-scalingo/v11/version.go b/vendor/github.com/Scalingo/go-scalingo/v11/version.go index e7e3862b6..c9a4241b1 100644 --- a/vendor/github.com/Scalingo/go-scalingo/v11/version.go +++ b/vendor/github.com/Scalingo/go-scalingo/v11/version.go @@ -1,3 +1,3 @@ package scalingo -var Version = "11.8.0" +var Version = "11.8.1" diff --git a/vendor/modules.txt b/vendor/modules.txt index 5d13790ba..b5d33c68a 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -59,7 +59,7 @@ github.com/ProtonMail/go-crypto/openpgp/s2k github.com/ProtonMail/go-crypto/openpgp/slhdsa github.com/ProtonMail/go-crypto/openpgp/x25519 github.com/ProtonMail/go-crypto/openpgp/x448 -# github.com/Scalingo/go-scalingo/v11 v11.8.0 +# github.com/Scalingo/go-scalingo/v11 v11.8.1 ## explicit; go 1.26.8 github.com/Scalingo/go-scalingo/v11 github.com/Scalingo/go-scalingo/v11/billing @@ -395,7 +395,7 @@ golang.org/x/crypto/ssh/knownhosts golang.org/x/net/context golang.org/x/net/internal/socks golang.org/x/net/proxy -# golang.org/x/sync v0.23.0 +# golang.org/x/sync v0.24.0 ## explicit; go 1.26.0 golang.org/x/sync/errgroup # golang.org/x/sys v0.48.0 @@ -408,7 +408,7 @@ golang.org/x/sys/windows # golang.org/x/term v0.46.0 ## explicit; go 1.26.0 golang.org/x/term -# golang.org/x/text v0.42.0 +# golang.org/x/text v0.43.0 ## explicit; go 1.26.0 golang.org/x/text/cases golang.org/x/text/internal