Skip to content

Commit 97b4dfa

Browse files
authored
Merge branch 'develop' into patch9
2 parents b1ada40 + c540244 commit 97b4dfa

File tree

14 files changed

+97
-62
lines changed

14 files changed

+97
-62
lines changed

.github/workflows/automerge.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ jobs:
2424

2525
# Here the PR gets approved.
2626
- name: Approve a PR
27-
if: ${{ steps.meta.outputs.update-type == 'version-update:semver-patch' || (!startsWith(steps.meta.outputs.previous-version, '0.') && steps.meta.outputs.update-type == 'version-update:semver-minor') }}
27+
if: ${{ steps.meta.outputs.update-type == null || steps.meta.outputs.update-type == 'version-update:semver-patch' || (!startsWith(steps.meta.outputs.previous-version, '0.') && steps.meta.outputs.update-type == 'version-update:semver-minor') }}
2828
run: gh pr review --approve "${{ github.event.pull_request.html_url }}"
2929
env:
3030
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3131

3232
# Finally, this sets the PR to allow auto-merging for patch and minor
3333
# updates if all checks pass
3434
- name: Enable auto-merge for Dependabot PRs
35-
if: ${{ steps.meta.outputs.update-type == 'version-update:semver-patch' || (!startsWith(steps.meta.outputs.previous-version, '0.') && steps.meta.outputs.update-type == 'version-update:semver-minor') }}
35+
if: ${{ steps.meta.outputs.update-type == null || steps.meta.outputs.update-type == 'version-update:semver-patch' || (!startsWith(steps.meta.outputs.previous-version, '0.') && steps.meta.outputs.update-type == 'version-update:semver-minor') }}
3636
run: gh pr merge --auto --squash "${{ github.event.pull_request.html_url }}"
3737
env:
3838
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

cmd/link.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package cmd
22

33
import (
4+
"fmt"
45
"os"
56
"os/signal"
67

78
"github.com/spf13/afero"
89
"github.com/spf13/cobra"
910
"github.com/spf13/viper"
1011
"github.com/supabase/cli/internal/link"
12+
"github.com/supabase/cli/internal/utils"
1113
"github.com/supabase/cli/internal/utils/flags"
1214
"golang.org/x/term"
1315
)
@@ -39,6 +41,9 @@ var (
3941
cobra.CheckErr(viper.BindPFlag("DB_PASSWORD", cmd.Flags().Lookup("password")))
4042
return link.Run(ctx, flags.ProjectRef, skipPooler, fsys)
4143
},
44+
PostRun: func(cmd *cobra.Command, args []string) {
45+
fmt.Fprintln(os.Stdout, "Finished "+utils.Aqua("supabase link")+".")
46+
},
4247
}
4348
)
4449

docs/supabase/db/pull.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Pulls schema changes from a remote database. A new migration file will be create
44

55
Requires your local project to be linked to a remote database by running `supabase link`. For self-hosted databases, you can pass in the connection parameters using `--db-url` flag.
66

7+
> Note this command requires Docker Desktop (or a running Docker daemon), as it starts a local Postgres container to diff your remote schema.
8+
79
Optionally, a new row can be inserted into the migration history table to reflect the current state of the remote database.
810

911
If no entries exist in the migration history table, `pg_dump` will be used to capture all contents of the remote schemas you have created. Otherwise, this command will only diff schema changes against the remote database, similar to running `db diff --linked`.

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ require (
3939
github.com/mithrandie/csvq-driver v1.7.0
4040
github.com/muesli/reflow v0.3.0
4141
github.com/oapi-codegen/nullable v1.1.0
42-
github.com/olekukonko/tablewriter v1.1.1
42+
github.com/olekukonko/tablewriter v1.1.2
4343
github.com/slack-go/slack v0.17.3
4444
github.com/spf13/afero v1.15.0
4545
github.com/spf13/cobra v1.10.1
@@ -127,9 +127,9 @@ require (
127127
github.com/charmbracelet/x/term v0.2.1 // indirect
128128
github.com/chavacava/garif v0.1.0 // indirect
129129
github.com/ckaznocha/intrange v0.3.1 // indirect
130-
github.com/clipperhouse/displaywidth v0.3.1 // indirect
130+
github.com/clipperhouse/displaywidth v0.6.0 // indirect
131131
github.com/clipperhouse/stringish v0.1.1 // indirect
132-
github.com/clipperhouse/uax29/v2 v2.2.0 // indirect
132+
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
133133
github.com/cloudflare/circl v1.6.1 // indirect
134134
github.com/containerd/console v1.0.5 // indirect
135135
github.com/containerd/containerd/api v1.9.0 // indirect
@@ -321,7 +321,7 @@ require (
321321
github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 // indirect
322322
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect
323323
github.com/olekukonko/errors v1.1.0 // indirect
324-
github.com/olekukonko/ll v0.1.2 // indirect
324+
github.com/olekukonko/ll v0.1.3 // indirect
325325
github.com/opencontainers/go-digest v1.0.0 // indirect
326326
github.com/opencontainers/image-spec v1.1.1 // indirect
327327
github.com/pelletier/go-toml v1.9.5 // indirect

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -190,12 +190,12 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
190190
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
191191
github.com/ckaznocha/intrange v0.3.1 h1:j1onQyXvHUsPWujDH6WIjhyH26gkRt/txNlV7LspvJs=
192192
github.com/ckaznocha/intrange v0.3.1/go.mod h1:QVepyz1AkUoFQkpEqksSYpNpUo3c5W7nWh/s6SHIJJk=
193-
github.com/clipperhouse/displaywidth v0.3.1 h1:k07iN9gD32177o1y4O1jQMzbLdCrsGJh+blirVYybsk=
194-
github.com/clipperhouse/displaywidth v0.3.1/go.mod h1:tgLJKKyaDOCadywag3agw4snxS5kYEuYR6Y9+qWDDYM=
193+
github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s=
194+
github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
195195
github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
196196
github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
197-
github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY=
198-
github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM=
197+
github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4=
198+
github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g=
199199
github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 h1:lkAMpLVBDaj17e85keuznYcH5rqI438v41pKcBl4ZxQ=
200200
github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA=
201201
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
@@ -838,10 +838,10 @@ github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 h1:zrbMGy9YXpIeTnGj
838838
github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6/go.mod h1:rEKTHC9roVVicUIfZK7DYrdIoM0EOr8mK1Hj5s3JjH0=
839839
github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM=
840840
github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
841-
github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0=
842-
github.com/olekukonko/ll v0.1.2/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew=
843-
github.com/olekukonko/tablewriter v1.1.1 h1:b3reP6GCfrHwmKkYwNRFh2rxidGHcT6cgxj/sHiDDx0=
844-
github.com/olekukonko/tablewriter v1.1.1/go.mod h1:De/bIcTF+gpBDB3Alv3fEsZA+9unTsSzAg/ZGADCtn4=
841+
github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg=
842+
github.com/olekukonko/ll v0.1.3/go.mod h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew=
843+
github.com/olekukonko/tablewriter v1.1.2 h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc=
844+
github.com/olekukonko/tablewriter v1.1.2/go.mod h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg=
845845
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
846846
github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
847847
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=

internal/link/link.go

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"github.com/jackc/pgx/v4"
1414
"github.com/spf13/afero"
1515
"github.com/supabase/cli/internal/utils"
16-
"github.com/supabase/cli/internal/utils/flags"
1716
"github.com/supabase/cli/internal/utils/tenant"
1817
"github.com/supabase/cli/pkg/api"
1918
"github.com/supabase/cli/pkg/cast"
@@ -22,40 +21,18 @@ import (
2221
)
2322

2423
func Run(ctx context.Context, projectRef string, skipPooler bool, fsys afero.Fs, options ...func(*pgx.ConnConfig)) error {
25-
majorVersion := utils.Config.Db.MajorVersion
24+
// 1. Link postgres version
2625
if err := checkRemoteProjectStatus(ctx, projectRef, fsys); err != nil {
2726
return err
2827
}
29-
30-
// 1. Check service config
28+
// 2. Check service config
3129
keys, err := tenant.GetApiKeys(ctx, projectRef)
3230
if err != nil {
3331
return err
3432
}
3533
LinkServices(ctx, projectRef, keys.ServiceRole, skipPooler, fsys)
36-
37-
// 2. Check database connection
38-
if config, err := flags.NewDbConfigWithPassword(ctx, projectRef); err != nil {
39-
fmt.Fprintln(os.Stderr, utils.Yellow("WARN:"), err)
40-
} else if err := linkDatabase(ctx, config, fsys, options...); err != nil {
41-
return err
42-
}
43-
4434
// 3. Save project ref
45-
if err := utils.WriteFile(utils.ProjectRefPath, []byte(projectRef), fsys); err != nil {
46-
return err
47-
}
48-
fmt.Fprintln(os.Stdout, "Finished "+utils.Aqua("supabase link")+".")
49-
50-
// 4. Suggest config update
51-
if utils.Config.Db.MajorVersion != majorVersion {
52-
fmt.Fprintln(os.Stderr, utils.Yellow("WARNING:"), "Local database version differs from the linked project.")
53-
fmt.Fprintf(os.Stderr, `Update your %s to fix it:
54-
[db]
55-
major_version = %d
56-
`, utils.Bold(utils.ConfigPath), utils.Config.Db.MajorVersion)
57-
}
58-
return nil
35+
return utils.WriteFile(utils.ProjectRefPath, []byte(projectRef), fsys)
5936
}
6037

6138
func LinkServices(ctx context.Context, projectRef, serviceKey string, skipPooler bool, fsys afero.Fs) {
@@ -66,7 +43,7 @@ func LinkServices(ctx context.Context, projectRef, serviceKey string, skipPooler
6643
func() error { return linkNetworkRestrictions(ctx, projectRef) },
6744
func() error { return linkPostgrest(ctx, projectRef) },
6845
func() error { return linkGotrue(ctx, projectRef) },
69-
func() error { return linkStorage(ctx, projectRef) },
46+
func() error { return linkStorage(ctx, projectRef, fsys) },
7047
func() error {
7148
if skipPooler {
7249
utils.Config.Db.Pooler.ConnectionString = ""
@@ -128,15 +105,15 @@ func linkGotrueVersion(ctx context.Context, api tenant.TenantAPI, fsys afero.Fs)
128105
return utils.WriteFile(utils.GotrueVersionPath, []byte(version), fsys)
129106
}
130107

131-
func linkStorage(ctx context.Context, projectRef string) error {
108+
func linkStorage(ctx context.Context, projectRef string, fsys afero.Fs) error {
132109
resp, err := utils.GetSupabase().V1GetStorageConfigWithResponse(ctx, projectRef)
133110
if err != nil {
134111
return errors.Errorf("failed to read Storage config: %w", err)
135112
} else if resp.JSON200 == nil {
136113
return errors.Errorf("unexpected Storage config status %d: %s", resp.StatusCode(), string(resp.Body))
137114
}
138115
utils.Config.Storage.FromRemoteStorageConfig(*resp.JSON200)
139-
return nil
116+
return utils.WriteFile(utils.StorageMigrationPath, []byte(utils.Config.Storage.TargetMigration), fsys)
140117
}
141118

142119
func linkStorageVersion(ctx context.Context, api tenant.TenantAPI, fsys afero.Fs) error {
@@ -253,8 +230,24 @@ func checkRemoteProjectStatus(ctx context.Context, projectRef string, fsys afero
253230
}
254231

255232
// Update postgres image version to match the remote project
256-
if version := resp.JSON200.Database.Version; len(version) > 0 {
257-
return utils.WriteFile(utils.PostgresVersionPath, []byte(version), fsys)
233+
return linkPostgresVersion(resp.JSON200.Database.Version, fsys)
234+
}
235+
236+
func linkPostgresVersion(version string, fsys afero.Fs) error {
237+
if len(version) == 0 {
238+
return nil
258239
}
259-
return nil
240+
majorVersion, err := strconv.ParseUint(strings.Split(version, ".")[0], 10, 7)
241+
if err != nil {
242+
return errors.Errorf("invalid major version: %w", err)
243+
}
244+
if uint64(utils.Config.Db.MajorVersion) != majorVersion {
245+
fmt.Fprintln(os.Stderr, utils.Yellow("WARNING:"), "Local database version differs from the linked project.")
246+
fmt.Fprintf(os.Stderr, `Update your %s to fix it:
247+
[db]
248+
major_version = %d
249+
`, utils.Bold(utils.ConfigPath), majorVersion)
250+
}
251+
utils.Config.Db.MajorVersion = uint(majorVersion)
252+
return utils.WriteFile(utils.PostgresVersionPath, []byte(version), fsys)
260253
}

internal/start/start.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,10 @@ func run(ctx context.Context, fsys afero.Fs, excludedContainers []string, dbConf
244244
}
245245

246246
var started []string
247-
var isStorageEnabled = utils.Config.Storage.Enabled && !isContainerExcluded(utils.Config.Storage.Image, excluded)
248-
var isImgProxyEnabled = utils.Config.Storage.ImageTransformation != nil &&
247+
isStorageEnabled := utils.Config.Storage.Enabled && !isContainerExcluded(utils.Config.Storage.Image, excluded)
248+
isImgProxyEnabled := utils.Config.Storage.ImageTransformation != nil &&
249249
utils.Config.Storage.ImageTransformation.Enabled && !isContainerExcluded(utils.Config.Storage.ImgProxyImage, excluded)
250+
isS3ProtocolEnabled := utils.Config.Storage.S3Protocol != nil && utils.Config.Storage.S3Protocol.Enabled
250251
fmt.Fprintln(os.Stderr, "Starting containers...")
251252

252253
// Start Logflare
@@ -793,7 +794,10 @@ EOF
793794
env = append(env, fmt.Sprintf("GOTRUE_EXTERNAL_%s_URL=%s", strings.ToUpper(name), config.Url))
794795
}
795796
}
796-
env = append(env, fmt.Sprintf("GOTRUE_EXTERNAL_WEB3_SOLANA_ENABLED=%v", utils.Config.Auth.Web3.Solana.Enabled))
797+
env = append(env,
798+
fmt.Sprintf("GOTRUE_EXTERNAL_WEB3_SOLANA_ENABLED=%v", utils.Config.Auth.Web3.Solana.Enabled),
799+
fmt.Sprintf("GOTRUE_EXTERNAL_WEB3_ETHEREUM_ENABLED=%v", utils.Config.Auth.Web3.Ethereum.Enabled),
800+
)
797801

798802
// OAuth server configuration
799803
if utils.Config.Auth.OAuthServer.Enabled {
@@ -994,6 +998,7 @@ EOF
994998
fmt.Sprintf("ENABLE_IMAGE_TRANSFORMATION=%t", isImgProxyEnabled),
995999
fmt.Sprintf("IMGPROXY_URL=http://%s:5001", utils.ImgProxyId),
9961000
"TUS_URL_PATH=/storage/v1/upload/resumable",
1001+
fmt.Sprintf("S3_PROTOCOL_ENABLED=%t", isS3ProtocolEnabled),
9971002
"S3_PROTOCOL_ACCESS_KEY_ID=" + utils.Config.Storage.S3Credentials.AccessKeyId,
9981003
"S3_PROTOCOL_ACCESS_KEY_SECRET=" + utils.Config.Storage.S3Credentials.SecretAccessKey,
9991004
"S3_PROTOCOL_PREFIX=/storage/v1",

internal/status/status.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (c *CustomName) toValues(exclude ...string) map[string]string {
8484
values[c.MailpitURL] = fmt.Sprintf("http://%s:%d", utils.Config.Hostname, utils.Config.Inbucket.Port)
8585
values[c.InbucketURL] = fmt.Sprintf("http://%s:%d", utils.Config.Hostname, utils.Config.Inbucket.Port)
8686
}
87-
if storageEnabled {
87+
if storageEnabled && utils.Config.Storage.S3Protocol != nil && utils.Config.Storage.S3Protocol.Enabled {
8888
values[c.StorageS3URL] = utils.GetApiUrl("/storage/v1/s3")
8989
values[c.StorageS3AccessKeyId] = utils.Config.Storage.S3Credentials.AccessKeyId
9090
values[c.StorageS3SecretAccessKey] = utils.Config.Storage.S3Credentials.SecretAccessKey

pkg/config/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,10 @@ func (s *storage) Clone() storage {
295295
img := *s.ImageTransformation
296296
copy.ImageTransformation = &img
297297
}
298+
if s.S3Protocol != nil {
299+
s3 := *s.S3Protocol
300+
copy.S3Protocol = &s3
301+
}
298302
return copy
299303
}
300304

pkg/config/storage.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type (
1414
ImgProxyImage string `toml:"-"`
1515
FileSizeLimit sizeInBytes `toml:"file_size_limit"`
1616
ImageTransformation *imageTransformation `toml:"image_transformation"`
17+
S3Protocol *s3Protocol `toml:"s3_protocol"`
1718
S3Credentials storageS3Credentials `toml:"-"`
1819
Buckets BucketConfig `toml:"buckets"`
1920
}
@@ -22,6 +23,10 @@ type (
2223
Enabled bool `toml:"enabled"`
2324
}
2425

26+
s3Protocol struct {
27+
Enabled bool `toml:"enabled"`
28+
}
29+
2530
storageS3Credentials struct {
2631
AccessKeyId string `toml:"-"`
2732
SecretAccessKey string `toml:"-"`
@@ -41,10 +46,7 @@ type (
4146
func (s *storage) ToUpdateStorageConfigBody() v1API.UpdateStorageConfigBody {
4247
body := v1API.UpdateStorageConfigBody{
4348
FileSizeLimit: cast.Ptr(int64(s.FileSizeLimit)),
44-
}
45-
// When local config is not set, we assume platform defaults should not change
46-
if s.ImageTransformation != nil {
47-
body.Features = &struct {
49+
Features: &struct {
4850
IcebergCatalog *struct {
4951
Enabled bool `json:"enabled"`
5052
MaxCatalogs int `json:"maxCatalogs"`
@@ -62,26 +64,32 @@ func (s *storage) ToUpdateStorageConfigBody() v1API.UpdateStorageConfigBody {
6264
MaxBuckets int `json:"maxBuckets"`
6365
MaxIndexes int `json:"maxIndexes"`
6466
} `json:"vectorBuckets,omitempty"`
65-
}{}
67+
}{},
68+
}
69+
// When local config is not set, we assume platform defaults should not change
70+
if s.ImageTransformation != nil {
6671
body.Features.ImageTransformation.Enabled = s.ImageTransformation.Enabled
6772
}
73+
if s.S3Protocol != nil {
74+
body.Features.S3Protocol.Enabled = s.S3Protocol.Enabled
75+
}
6876
return body
6977
}
7078

7179
func (s *storage) FromRemoteStorageConfig(remoteConfig v1API.StorageConfigResponse) {
7280
s.FileSizeLimit = sizeInBytes(remoteConfig.FileSizeLimit)
81+
s.TargetMigration = remoteConfig.MigrationVersion
7382
// When local config is not set, we assume platform defaults should not change
7483
if s.ImageTransformation != nil {
7584
s.ImageTransformation.Enabled = remoteConfig.Features.ImageTransformation.Enabled
7685
}
86+
if s.S3Protocol != nil {
87+
s.S3Protocol.Enabled = remoteConfig.Features.S3Protocol.Enabled
88+
}
7789
}
7890

7991
func (s *storage) DiffWithRemote(remoteConfig v1API.StorageConfigResponse) ([]byte, error) {
8092
copy := s.Clone()
81-
if s.ImageTransformation != nil {
82-
img := *s.ImageTransformation
83-
copy.ImageTransformation = &img
84-
}
8593
// Convert the config values into easily comparable remoteConfig values
8694
currentValue, err := ToTomlBytes(copy)
8795
if err != nil {

0 commit comments

Comments
 (0)