From 895cf9cbbfd53a378f1bd8cb17e585739d309664 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:48:24 -0400 Subject: [PATCH 01/32] link: prerelease binaries Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c6e041d7..15632bd5a 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Please see our [SECURITY.md](SECURITY.md) for guidance on reporting security-rel ## Binaries with unreleased changes -Binaries containing merged changes that are planned for the next release are available [here](https://github.com/fastly/cli/actions/workflows/merge_to_main.yml). +There are [prerelease binaries](https://github.com/fastly/cli/actions/workflows/merge_to_main.yml) containing merged changes. Use at your own risk. Updating will revert the binary to the latest released version. From 1b92140e38d5ed6095dd3ab98dc254e048eee8b6 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:44:18 -0400 Subject: [PATCH 02/32] spelling: ; otherwise, Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/argparser/flags.go | 2 +- pkg/commands/compute/deploy.go | 2 +- pkg/commands/compute/init.go | 6 +++--- pkg/commands/compute/setup/secret_store.go | 2 +- pkg/commands/kvstoreentry/create.go | 2 +- pkg/github/github.go | 6 +++--- pkg/testutil/assert.go | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/argparser/flags.go b/pkg/argparser/flags.go index b86ef49a6..cc941a9c0 100644 --- a/pkg/argparser/flags.go +++ b/pkg/argparser/flags.go @@ -296,7 +296,7 @@ func GetSpecifiedVersion(vs []*fastly.Version, version string) (*fastly.Version, } // Content determines if the given flag value is a file path, and if so read -// the contents from disk, otherwise presume the given value is the content. +// the contents from disk; otherwise, presume the given value is the content. func Content(flagval string) string { content := flagval if path, err := filepath.Abs(flagval); err == nil { diff --git a/pkg/commands/compute/deploy.go b/pkg/commands/compute/deploy.go index 102333330..1fcd3939a 100644 --- a/pkg/commands/compute/deploy.go +++ b/pkg/commands/compute/deploy.go @@ -505,7 +505,7 @@ func (c *DeployCommand) NewService(manifestFilename string, spinner text.Spinner ) if !c.Globals.Flags.AutoYes && !c.Globals.Flags.NonInteractive { - text.Output(out, "There is no Fastly service associated with this package. To connect to an existing service add the Service ID to the %s file, otherwise follow the prompts to create a service now.\n\n", manifestFilename) + text.Output(out, "There is no Fastly service associated with this package. To connect to an existing service add the Service ID to the %s file; otherwise, follow the prompts to create a service now.\n\n", manifestFilename) text.Output(out, "Press ^C at any time to quit.") if c.Globals.Manifest.File.Setup.Defined() { diff --git a/pkg/commands/compute/init.go b/pkg/commands/compute/init.go index 8a35a781c..774ea6ca9 100644 --- a/pkg/commands/compute/init.go +++ b/pkg/commands/compute/init.go @@ -606,7 +606,7 @@ func validateDirectoryPermissions(dst string) text.SpinnerProcess { } // PromptOrReturn will prompt the user for information missing from the -// fastly.toml manifest file, otherwise if it already exists then the value is +// fastly.toml manifest file; otherwise, if it already exists then the value is // returned as is. func (c *InitCommand) PromptOrReturn(email string, in io.Reader, out io.Writer) (name, description string, authors []string, err error) { flags := c.Globals.Flags @@ -690,7 +690,7 @@ func promptPackageDescription(flags global.Flags, desc string, in io.Reader, out // either via the corresponding CLI flag or the manifest file. // // It will use a default of the user's email found within the manifest, if set -// there, otherwise the value will be an empty slice. +// there; otherwise, the value will be an empty slice. // // FIXME: Handle prompting for multiple authors. func promptPackageAuthors(flags global.Flags, authors []string, manifestEmail string, in io.Reader, out io.Writer) ([]string, error) { @@ -1015,7 +1015,7 @@ mimes: } if archive != nil { - // Ensure there is a file extension on our filename, otherwise we won't + // Ensure there is a file extension on our filename; otherwise, we won't // know what type of archive format we're dealing with when we come to call // the archive.Extract() method. if ext == "" { diff --git a/pkg/commands/compute/setup/secret_store.go b/pkg/commands/compute/setup/secret_store.go index 1af8acbb7..e28a83c5d 100644 --- a/pkg/commands/compute/setup/secret_store.go +++ b/pkg/commands/compute/setup/secret_store.go @@ -219,7 +219,7 @@ func (s *SecretStores) Create() error { } err = s.Spinner.Process(fmt.Sprintf("Creating resource link between service and Secret Store '%s'...", store.Name), func(_ *text.SpinnerWrapper) error { - // We need to link the secret store to the C@E Service, otherwise the service + // We need to link the secret store to the C@E Service; otherwise, the service // will not have access to the store. _, err = s.APIClient.CreateResource(context.TODO(), &fastly.CreateResourceInput{ ServiceID: s.ServiceID, diff --git a/pkg/commands/kvstoreentry/create.go b/pkg/commands/kvstoreentry/create.go index b8f1113c9..b5c210227 100644 --- a/pkg/commands/kvstoreentry/create.go +++ b/pkg/commands/kvstoreentry/create.go @@ -403,7 +403,7 @@ func (c *CreateCommand) CallBatchEndpoint(in io.Reader, out io.Writer) error { } // If we were able to convert the error into a fastly.HTTPError, then - // display those errors to the user, otherwise we'll display the original + // display those errors to the user; otherwise, we'll display the original // error type. if ok { for i, e := range he.Errors { diff --git a/pkg/github/github.go b/pkg/github/github.go index 0679594dd..17bec1b23 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -186,7 +186,7 @@ func (g *Asset) Download(endpoint string) (bin string, err error) { return moveExtractedBinary(g.binary, extractedBinary) } -// URL returns the downloadable asset URL if set, otherwise calls the API metadata endpoint. +// URL returns the downloadable asset URL if set; otherwise, calls the API metadata endpoint. func (g *Asset) URL() (url string, err error) { if g.url != "" { return g.url, nil @@ -203,7 +203,7 @@ func (g *Asset) URL() (url string, err error) { return g.url, nil } -// LatestVersion returns the asset LatestVersion if set, otherwise calls the API metadata endpoint. +// LatestVersion returns the asset LatestVersion if set; otherwise, calls the API metadata endpoint. func (g *Asset) LatestVersion() (version string, err error) { if g.version != "" { return g.version, nil @@ -308,7 +308,7 @@ type AssetVersioner interface { RequestedVersion() (version string) // SetRequestedVersion sets the version of the asset to be downloaded. SetRequestedVersion(version string) - // URL returns the asset URL if set, otherwise calls the API metadata endpoint. + // URL returns the asset URL if set; otherwise, calls the API metadata endpoint. URL() (url string, err error) // LatestVersion returns the latest version. LatestVersion() (version string, err error) diff --git a/pkg/testutil/assert.go b/pkg/testutil/assert.go index 8aec2860a..d4d788d2c 100644 --- a/pkg/testutil/assert.go +++ b/pkg/testutil/assert.go @@ -108,7 +108,7 @@ func AssertRemediationErrorContains(t *testing.T, err error, target string) { // // Example: Some flags will internally be passed to `argparser.Content` to acquire // the value. If passed a file path, then we expect the testdata/ to -// have been read, otherwise we expect the given flag value to have been used. +// have been read; otherwise, we expect the given flag value to have been used. func AssertPathContentFlag(flag string, wantError string, args []string, fixture string, content string, t *testing.T) { if wantError == "" { for i, a := range args { From 81b79d437e67136d4761eaf5ac9ad09264f78d44 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:26:27 -0400 Subject: [PATCH 03/32] spelling: a Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/kvstore/create.go | 2 +- pkg/commands/kvstore/delete.go | 2 +- pkg/commands/kvstore/describe.go | 2 +- pkg/commands/kvstoreentry/create.go | 2 +- pkg/commands/kvstoreentry/delete.go | 2 +- pkg/commands/kvstoreentry/describe.go | 2 +- pkg/commands/kvstoreentry/get.go | 2 +- pkg/commands/service/service_test.go | 2 +- pkg/commands/version/version_test.go | 2 +- pkg/config/config_test.go | 6 +++--- pkg/text/kvstore.go | 2 +- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkg/commands/kvstore/create.go b/pkg/commands/kvstore/create.go index 2c99ff090..c638f8f97 100644 --- a/pkg/commands/kvstore/create.go +++ b/pkg/commands/kvstore/create.go @@ -12,7 +12,7 @@ import ( "github.com/fastly/cli/pkg/text" ) -// CreateCommand calls the Fastly API to create an kv store. +// CreateCommand calls the Fastly API to create a kv store. type CreateCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstore/delete.go b/pkg/commands/kvstore/delete.go index 4b39a1e23..5b40e1be0 100644 --- a/pkg/commands/kvstore/delete.go +++ b/pkg/commands/kvstore/delete.go @@ -15,7 +15,7 @@ import ( "github.com/fastly/cli/pkg/text" ) -// DeleteCommand calls the Fastly API to delete an kv store. +// DeleteCommand calls the Fastly API to delete a kv store. type DeleteCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstore/describe.go b/pkg/commands/kvstore/describe.go index 0e08a9796..dcc9d545a 100644 --- a/pkg/commands/kvstore/describe.go +++ b/pkg/commands/kvstore/describe.go @@ -12,7 +12,7 @@ import ( "github.com/fastly/cli/pkg/text" ) -// DescribeCommand calls the Fastly API to fetch the value of a key from an kv store. +// DescribeCommand calls the Fastly API to fetch the value of a key from a kv store. type DescribeCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstoreentry/create.go b/pkg/commands/kvstoreentry/create.go index b5c210227..7568dcae8 100644 --- a/pkg/commands/kvstoreentry/create.go +++ b/pkg/commands/kvstoreentry/create.go @@ -54,7 +54,7 @@ func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateComman return &c } -// CreateCommand calls the Fastly API to insert a key into an kv store. +// CreateCommand calls the Fastly API to insert a key into a kv store. type CreateCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstoreentry/delete.go b/pkg/commands/kvstoreentry/delete.go index cc3b5e76b..d5fd5d791 100644 --- a/pkg/commands/kvstoreentry/delete.go +++ b/pkg/commands/kvstoreentry/delete.go @@ -24,7 +24,7 @@ const DeleteKeysPoolSize int = 100 // stopping the goroutines from executing. const DeleteKeysMaxErrors int = 100 -// DeleteCommand calls the Fastly API to delete an kv store. +// DeleteCommand calls the Fastly API to delete a kv store. type DeleteCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstoreentry/describe.go b/pkg/commands/kvstoreentry/describe.go index c658a9fcb..66a45c4bd 100644 --- a/pkg/commands/kvstoreentry/describe.go +++ b/pkg/commands/kvstoreentry/describe.go @@ -12,7 +12,7 @@ import ( "github.com/fastly/cli/pkg/global" ) -// DescribeCommand calls the Fastly API to fetch the value of a key from an kv store. +// DescribeCommand calls the Fastly API to fetch the value of a key from a kv store. type DescribeCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/kvstoreentry/get.go b/pkg/commands/kvstoreentry/get.go index adf3d4d93..993eeadef 100644 --- a/pkg/commands/kvstoreentry/get.go +++ b/pkg/commands/kvstoreentry/get.go @@ -15,7 +15,7 @@ import ( "github.com/fastly/cli/pkg/text" ) -// GetCommand calls the Fastly API to fetch the value of a key from an kv store. +// GetCommand calls the Fastly API to fetch the value of a key from a kv store. type GetCommand struct { argparser.Base argparser.JSONOutput diff --git a/pkg/commands/service/service_test.go b/pkg/commands/service/service_test.go index 9fc3a3fab..da5c79215 100644 --- a/pkg/commands/service/service_test.go +++ b/pkg/commands/service/service_test.go @@ -365,7 +365,7 @@ func TestServiceDelete(t *testing.T) { for testcaseIdx := range scenarios { testcase := &scenarios[testcaseIdx] t.Run(strings.Join(testcase.args, " "), func(t *testing.T) { - // We're going to chdir to an temp environment, + // We're going to chdir to a temp environment, // so save the PWD to return to, afterwards. pwd, err := os.Getwd() if err != nil { diff --git a/pkg/commands/version/version_test.go b/pkg/commands/version/version_test.go index ba14e4ad5..779bbaa20 100644 --- a/pkg/commands/version/version_test.go +++ b/pkg/commands/version/version_test.go @@ -23,7 +23,7 @@ func TestVersion(t *testing.T) { t.Skip("skipping test due to unix specific mock shell script") } - // We're going to chdir to an temp environment, + // We're going to chdir to a temp environment, // so save the PWD to return to, afterwards. pwd, err := os.Getwd() if err != nil { diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 25ec9d48a..c705534bd 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -74,7 +74,7 @@ func TestConfigRead(t *testing.T) { for _, testcase := range scenarios { t.Run(testcase.name, func(t *testing.T) { - // We're going to chdir to an temp environment, + // We're going to chdir to a temp environment, // so save the PWD to return to, afterwards. pwd, err := os.Getwd() if err != nil { @@ -167,7 +167,7 @@ func TestConfigRead(t *testing.T) { // TestUseStatic validates legacy user data is migrated successfully. func TestUseStatic(t *testing.T) { - // We're going to chdir to an temp environment, + // We're going to chdir to a temp environment, // so save the PWD to return to, afterwards. pwd, err := os.Getwd() if err != nil { @@ -294,7 +294,7 @@ func TestInvalidConfig(t *testing.T) { for testcaseIdx := range scenarios { testcase := &scenarios[testcaseIdx] t.Run(testcase.Name, func(t *testing.T) { - // We're going to chdir to an temp environment, + // We're going to chdir to a temp environment, // so save the PWD to return to, afterwards. pwd, err := os.Getwd() if err != nil { diff --git a/pkg/text/kvstore.go b/pkg/text/kvstore.go index bad7fe20f..e36171469 100644 --- a/pkg/text/kvstore.go +++ b/pkg/text/kvstore.go @@ -34,7 +34,7 @@ func PrintKVStoreKeys(out io.Writer, prefix string, keys []string) { } } -// PrintKVStoreKeyValue pretty prints a value from an kv store to a +// PrintKVStoreKeyValue pretty prints a value from a kv store to a // given io.Writer. Consumers can provide a prefix string which will be used as // a prefix to each line, useful for indentation. func PrintKVStoreKeyValue(out io.Writer, prefix string, key, value string) { From cfdaf1a46391b3aaf0ee476f4aaf60e77fdc4648 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:54:21 -0400 Subject: [PATCH 04/32] spelling: access Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/objectstorage/accesskeys/accesskeys_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/commands/objectstorage/accesskeys/accesskeys_test.go b/pkg/commands/objectstorage/accesskeys/accesskeys_test.go index d815bdcb2..b1393ab3c 100644 --- a/pkg/commands/objectstorage/accesskeys/accesskeys_test.go +++ b/pkg/commands/objectstorage/accesskeys/accesskeys_test.go @@ -110,7 +110,7 @@ func TestAccessKeysDelete(t *testing.T) { Status: http.StatusText(http.StatusBadRequest), Body: io.NopCloser(bytes.NewReader(testutil.GenJSON(` { - "title": "invalid Acess Key ID", + "title": "invalid Access Key ID", "status": 400 } `))), @@ -167,7 +167,7 @@ func TestAccessKeysGet(t *testing.T) { Status: http.StatusText(http.StatusBadRequest), Body: io.NopCloser(bytes.NewReader(testutil.GenJSON(` { - "title": "invalid Acess Key ID", + "title": "invalid Access Key ID", "status": 400 } `))), From 1c2ad4a79c90224ee756dcc7f9bde8446baa3ea1 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:25:48 -0400 Subject: [PATCH 05/32] spelling: an Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- CHANGELOG.md | 2 +- pkg/commands/compute/publish.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7f86bc6c..152d97e37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -212,7 +212,7 @@ both the old and new forms are: - feat(service/vcl): moved the `vcl` command under the `service` command, with an unlisted and deprecated alias of `vcl` ([#1616](https://github.com/fastly/cli/pull/1616)) - feat(service/healthcheck): moved the `healthcheck` command under the `service` command, with an unlisted and deprecated alias of `healthcheck` ([#1619](https://github.com/fastly/cli/pull/1619)) - feat(service/backend): moved the `backend` command under the `service` command, with an unlisted and deprecated alias of `backend` ([#1621](https://github.com/fastly/cli/pull/1621)) -- feat(service/acl): moved the `acl` and `aclentry` commands under the `service` command, with a unlisted and deprecated aliases of `acl` and `aclentry` ([#1621](https://github.com/fastly/cli/pull/1624)) +- feat(service/acl): moved the `acl` and `aclentry` commands under the `service` command, with an unlisted and deprecated aliases of `acl` and `aclentry` ([#1621](https://github.com/fastly/cli/pull/1624)) - feat(version): If the latest version is at least one major version higher than the current version, provide links to the release notes for the major version(s) so the user can review them before upgrading. ([#1623](https://github.com/fastly/cli/pull/1623)) - feat(service/imageoptimizerdefaults): moved the `imageoptimizerdefaults` commands under the `service` command, with an unlisted and deprecated alias of `imageoptimizerdefaults` ([#1627](https://github.com/fastly/cli/pull/1627)) - feat(service/alert): moved the `alerts` command to the `service alert` command, with an unlisted and deprecated alias of `alerts` ([#1616](https://github.com/fastly/cli/pull/1626)) diff --git a/pkg/commands/compute/publish.go b/pkg/commands/compute/publish.go index 5d4cb5815..86339f634 100644 --- a/pkg/commands/compute/publish.go +++ b/pkg/commands/compute/publish.go @@ -178,10 +178,10 @@ func (c *PublishCommand) Deploy(in io.Reader, out io.Writer) error { c.deploy.PackagePath = c.pkg.Value } if c.serviceName.WasSet { - c.deploy.ServiceName = c.serviceName // deploy's field is a argparser.OptionalServiceNameID + c.deploy.ServiceName = c.serviceName // deploy's field is an argparser.OptionalServiceNameID } if c.serviceVersion.WasSet { - c.deploy.ServiceVersion = c.serviceVersion // deploy's field is a argparser.OptionalServiceVersion + c.deploy.ServiceVersion = c.serviceVersion // deploy's field is an argparser.OptionalServiceVersion } if c.domain.WasSet { c.deploy.Domain = c.domain.Value From 46b5909809b0ed341dbb5fa3dbdf057089631afd Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:50:29 -0400 Subject: [PATCH 06/32] spelling: and are not Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 8f988a20d..4516add03 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -11,7 +11,7 @@ assignees: '' **Note**: Please keep in mind that if your feature request discusses any details that you aren't comfortable disclosing in this public forum (such as service IDs), you will need to open a Fastly support ticket instead: https://support.fastly.com. Feature requests opened here: - - Do not have an SLA nor are guaranteed to be implemented + - Do not have an SLA and are not guaranteed to be implemented - Should not be a duplicate of an existing support ticket that you have already created, or vice versa More details on submitting issues can be found here: https://github.com/fastly/cli/blob/main/ISSUES.md From 4df030ebb8bf28448f1f4ea23dad3e555aa4cff4 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:55:16 -0400 Subject: [PATCH 07/32] spelling: anonymization Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/ngwaf/workspace/create.go | 8 ++++---- pkg/commands/ngwaf/workspace/update.go | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/commands/ngwaf/workspace/create.go b/pkg/commands/ngwaf/workspace/create.go index e9e3dd77f..9cb0e49ae 100644 --- a/pkg/commands/ngwaf/workspace/create.go +++ b/pkg/commands/ngwaf/workspace/create.go @@ -31,7 +31,7 @@ type CreateCommand struct { defaultBlockingCode argparser.OptionalInt defaultRedirectURL argparser.OptionalString clientIPHeaders argparser.OptionalString - ipAnonimization argparser.OptionalString + ipAnonymization argparser.OptionalString } // NewCreateCommand returns a usable command registered under the parent. @@ -53,7 +53,7 @@ func NewCreateCommand(parent argparser.Registerer, g *global.Data) *CreateComman c.CmdClause.Flag("clientIPHeaders", "Specify the request header containing the client IP address. Input accepted as colon separated string.").Action(c.clientIPHeaders.Set).StringVar(&c.clientIPHeaders.Value) c.CmdClause.Flag("defaultBlockingCode", "Default status code that is returned when a request to your web application is blocked.").Action(c.defaultBlockingCode.Set).IntVar(&c.defaultBlockingCode.Value) c.CmdClause.Flag("defaultRedirectURL", "Redirect url to be used if code 301 or 302 is used.").Action(c.defaultRedirectURL.Set).StringVar(&c.defaultRedirectURL.Value) - c.CmdClause.Flag("ipAnonimization", "Agents will anonymize IP addresses according to the option selected.").Action(c.ipAnonimization.Set).StringVar(&c.ipAnonimization.Value) + c.CmdClause.Flag("ipAnonymization", "Agents will anonymize IP addresses according to the option selected.").Action(c.ipAnonymization.Set).StringVar(&c.ipAnonymization.Value) c.RegisterFlagBool(c.JSONFlag()) return &c @@ -85,8 +85,8 @@ func (c *CreateCommand) Exec(_ io.Reader, out io.Writer) error { if c.defaultRedirectURL.WasSet { input.DefaultRedirectURL = &c.defaultRedirectURL.Value } - if c.ipAnonimization.WasSet { - input.IPAnonymization = &c.ipAnonimization.Value + if c.ipAnonymization.WasSet { + input.IPAnonymization = &c.ipAnonymization.Value } fc, ok := c.Globals.APIClient.(*fastly.Client) diff --git a/pkg/commands/ngwaf/workspace/update.go b/pkg/commands/ngwaf/workspace/update.go index 7257c5443..1f4665264 100644 --- a/pkg/commands/ngwaf/workspace/update.go +++ b/pkg/commands/ngwaf/workspace/update.go @@ -32,7 +32,7 @@ type UpdateCommand struct { defaultBlockingCode argparser.OptionalInt defaultRedirectURL argparser.OptionalString clientIPHeaders argparser.OptionalString - ipAnonimization argparser.OptionalString + ipAnonymization argparser.OptionalString } // NewUpdateCommand returns a usable command registered under the parent. @@ -55,7 +55,7 @@ func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateComman c.CmdClause.Flag("clientIPHeaders", "Specify the request header containing the client IP address. Input accepted as colon separated string.").Action(c.clientIPHeaders.Set).StringVar(&c.clientIPHeaders.Value) c.CmdClause.Flag("defaultBlockingCode", "Default status code that is returned when a request to your web application is blocked.").Action(c.defaultBlockingCode.Set).IntVar(&c.defaultBlockingCode.Value) c.CmdClause.Flag("defaultRedirectURL", "Redirect url to be used if code 301 or 302 is used.").Action(c.defaultRedirectURL.Set).StringVar(&c.defaultRedirectURL.Value) - c.CmdClause.Flag("ipAnonimization", "Agents will anonymize IP addresses according to the option selected.").Action(c.ipAnonimization.Set).StringVar(&c.ipAnonimization.Value) + c.CmdClause.Flag("ipAnonymization", "Agents will anonymize IP addresses according to the option selected.").Action(c.ipAnonymization.Set).StringVar(&c.ipAnonymization.Value) c.RegisterFlagBool(c.JSONFlag()) return &c @@ -96,8 +96,8 @@ func (c *UpdateCommand) Exec(_ io.Reader, out io.Writer) error { if c.defaultRedirectURL.WasSet { input.DefaultRedirectURL = &c.defaultRedirectURL.Value } - if c.ipAnonimization.WasSet { - input.IPAnonymization = &c.ipAnonimization.Value + if c.ipAnonymization.WasSet { + input.IPAnonymization = &c.ipAnonymization.Value } fc, ok := c.Globals.APIClient.(*fastly.Client) From 65be067cc3d0fa3aea52e2d5c36eeff2d96f9b9e Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:25:20 -0400 Subject: [PATCH 08/32] spelling: anymore Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/compute/build_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/commands/compute/build_test.go b/pkg/commands/compute/build_test.go index f61418bbd..bd829b161 100644 --- a/pkg/commands/compute/build_test.go +++ b/pkg/commands/compute/build_test.go @@ -200,7 +200,7 @@ func TestBuildRust(t *testing.T) { // `wasmtoolsBinName` and used that for both `tmpBin` and `binPath` and // this works fine on *nix systems. But once Windows did `os.Rename()` and // move tmpBin to binPath it would no longer be able to set permissions on - // the binPath because it didn't think the file existed any more. My guess + // the binPath because it didn't think the file existed anymore. My guess // is that moving a file over itself causes Windows to remove the file. // // So to work around that issue I just create two separate files because @@ -394,7 +394,7 @@ func TestBuildGo(t *testing.T) { // `wasmtoolsBinName` and used that for both `tmpBin` and `binPath` and // this works fine on *nix systems. But once Windows did `os.Rename()` and // move tmpBin to binPath it would no longer be able to set permissions on - // the binPath because it didn't think the file existed any more. My guess + // the binPath because it didn't think the file existed anymore. My guess // is that moving a file over itself causes Windows to remove the file. // // So to work around that issue I just create two separate files because @@ -576,7 +576,7 @@ func TestBuildJavaScript(t *testing.T) { // `wasmtoolsBinName` and used that for both `tmpBin` and `binPath` and // this works fine on *nix systems. But once Windows did `os.Rename()` and // move tmpBin to binPath it would no longer be able to set permissions on - // the binPath because it didn't think the file existed any more. My guess + // the binPath because it didn't think the file existed anymore. My guess // is that moving a file over itself causes Windows to remove the file. // // So to work around that issue I just create two separate files because @@ -766,7 +766,7 @@ func TestBuildOther(t *testing.T) { // `wasmtoolsBinName` and used that for both `tmpBin` and `binPath` and // this works fine on *nix systems. But once Windows did `os.Rename()` and // move tmpBin to binPath it would no longer be able to set permissions on - // the binPath because it didn't think the file existed any more. My guess + // the binPath because it didn't think the file existed anymore. My guess // is that moving a file over itself causes Windows to remove the file. // // So to work around that issue I just create two separate files because From ab092041b2325055ba8f3049e1fddab4ce5601c1 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:27:40 -0400 Subject: [PATCH 09/32] spelling: descending Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 152d97e37..87f91932d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -206,7 +206,7 @@ both the old and new forms are: - feat(compute/hashfiles): remove hashsum subcommand ([#1608](https://github.com/fastly/cli/pull/1608)) - feat(ngwaf/rules): add support for CRUD operations for NGWAF rules ([#1605](https://github.com/fastly/cli/pull/1605)) - feat(compute/deploy): added the `--no-default-domain` flag to allow for the skipping of automatic domain creation when deploying a Compute service([#1610](https://github.com/fastly/cli/pull/1610)) -- refactor(argparser/flags.go): add flag conversion utilities for converting string flags to bools and checking ascending and desecnding flags ([#1611](https://github.com/fastly/cli/pull/1611)) +- refactor(argparser/flags.go): add flag conversion utilities for converting string flags to bools and checking ascending and descending flags ([#1611](https://github.com/fastly/cli/pull/1611)) - feat(service/purge): Add 'service purge' command as replacement for 'purge', with an unlisted and deprecated alias of 'purge'. ([#1612](https://github.com/fastly/cli/pull/1612)) - feat(service/version): Add 'service version ...' commands as replacements for 'service-version ...', with unlisted and deprecated aliases of 'service-version ...'. ([#1614](https://github.com/fastly/cli/pull/1614)) - feat(service/vcl): moved the `vcl` command under the `service` command, with an unlisted and deprecated alias of `vcl` ([#1616](https://github.com/fastly/cli/pull/1616)) From 31d54c0d04b14587c26e25a054b60db2b49d2233 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:48:43 -0400 Subject: [PATCH 10/32] spelling: fall back Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/argparser/flags.go | 4 ++-- pkg/commands/compute/init_test.go | 2 +- pkg/commands/compute/serve.go | 2 +- pkg/commands/compute/serve_test.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/argparser/flags.go b/pkg/argparser/flags.go index cc941a9c0..460713ab7 100644 --- a/pkg/argparser/flags.go +++ b/pkg/argparser/flags.go @@ -186,7 +186,7 @@ type OptionalCustomerID struct { // Parse returns a customer ID either from a flag or from a user defined // environment variable (see pkg/env/env.go). // -// NOTE: Will fallback to FASTLY_CUSTOMER_ID environment variable if no flag value set. +// NOTE: Will fall back to FASTLY_CUSTOMER_ID environment variable if no flag value set. func (sv *OptionalCustomerID) Parse() error { if sv.Value == "" { if e := os.Getenv(env.CustomerID); e != "" { @@ -206,7 +206,7 @@ type OptionalWorkspaceID struct { // Parse returns a workspace ID either from a flag or from a user defined // environment variable (see pkg/env/env.go). // -// NOTE: Will fallback to FASTLY_WORKSPACE_ID environment variable if no flag value set. +// NOTE: Will fall back to FASTLY_WORKSPACE_ID environment variable if no flag value set. func (sv *OptionalWorkspaceID) Parse() error { if sv.Value == "" { if e := os.Getenv(env.WorkspaceID); e != "" { diff --git a/pkg/commands/compute/init_test.go b/pkg/commands/compute/init_test.go index e2b54c762..b04f13c63 100644 --- a/pkg/commands/compute/init_test.go +++ b/pkg/commands/compute/init_test.go @@ -468,7 +468,7 @@ func TestInit(t *testing.T) { // we need to define stdin as the init process prompts the user multiple // times, but we don't need to provide any values as all our prompts will - // fallback to default values if the input is unrecognised. + // fall back to default values if the input is unrecognised. opts.Input = strings.NewReader(testcase.stdin) return opts, nil } diff --git a/pkg/commands/compute/serve.go b/pkg/commands/compute/serve.go index 790d67e7e..0763db294 100644 --- a/pkg/commands/compute/serve.go +++ b/pkg/commands/compute/serve.go @@ -353,7 +353,7 @@ func (c *ServeCommand) setBackendsWithDefaultOverrideHostIfMissing(out io.Writer // in the fastly.toml [viceroy.viceroy_version]. Otherwise, if not installed, we // install it in the same directory as the application configuration data. // -// In the case of a network failure we fallback to the latest installed version of the +// In the case of a network failure we fall back to the latest installed version of the // Viceroy binary as long as one is installed and has the correct permissions. func (c *ServeCommand) GetViceroy(spinner text.Spinner, out io.Writer, manifestPath string) (bin string, err error) { if c.ViceroyBinPath != "" { diff --git a/pkg/commands/compute/serve_test.go b/pkg/commands/compute/serve_test.go index 09a3aa644..dba9bb166 100644 --- a/pkg/commands/compute/serve_test.go +++ b/pkg/commands/compute/serve_test.go @@ -81,7 +81,7 @@ func TestGetViceroy(t *testing.T) { var file config.File // NOTE: We purposefully provide a nonsensical path, which we expect to fail, - // but the function call should fallback to using the stubbed static config + // but the function call should fall back to using the stubbed static config // defined above. We also don't pass stdin, stdout arguments as that // particular user flow isn't executed in this test case. err = file.Read("example", strings.NewReader("yes"), &out, fsterr.MockLog{}, false) From 3d3ef999578deca8a6b7cb8126f79f812d08dd12 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:27:50 -0400 Subject: [PATCH 11/32] spelling: from which Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/global/global.go | 2 +- pkg/manifest/data.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/global/global.go b/pkg/global/global.go index f8fd67759..c9e85bac2 100644 --- a/pkg/global/global.go +++ b/pkg/global/global.go @@ -34,7 +34,7 @@ type Versioners struct { // Data holds global-ish configuration data from all sources: environment // variables, config files, and flags. It has methods to give each parameter to -// the components that need it, including the place the parameter came from, +// the components that need it, including the place from which the parameter came, // which is a requirement. // // If the same parameter is defined in multiple places, it is resolved according diff --git a/pkg/manifest/data.go b/pkg/manifest/data.go index 8607eeb43..36b94c719 100644 --- a/pkg/manifest/data.go +++ b/pkg/manifest/data.go @@ -8,7 +8,7 @@ import ( // Data holds global-ish manifest data from manifest files, and flag sources. // It has methods to give each parameter to the components that need it, -// including the place the parameter came from, which is a requirement. +// including the place from which the parameter came, which is a requirement. // // If the same parameter is defined in multiple places, it is resolved according // to the following priority order: the manifest file (lowest priority) and then From ed9b4f191b955fc327764ab9c23db2684995f949 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:25:03 -0400 Subject: [PATCH 12/32] spelling: github Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 30444a4d6..7086e8546 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,6 +4,6 @@ The fastly/cli project team welcomes security reports and is committed to provid ## Security advisories -Remediation of security vulnerabilities is prioritized by the project team. The project team endeavors to coordinate remediation with third-party stakeholders, and is committed to transparency in the disclosure process. The fastly/cli team announces security issues in release notes as well as Github Security Advisories on a best-effort basis. +Remediation of security vulnerabilities is prioritized by the project team. The project team endeavors to coordinate remediation with third-party stakeholders, and is committed to transparency in the disclosure process. The fastly/cli team announces security issues in release notes as well as GitHub Security Advisories on a best-effort basis. Note that communications related to security issues in Fastly-maintained OSS as described here are distinct from [Fastly Security Advisories](https://www.fastly.com/security-advisories). From 8c0886e40e3d40f5008da388390ddb5a8b9546ca Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:10:47 -0400 Subject: [PATCH 13/32] spelling: grafana Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/service/logging/grafanacloudlogs/update.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/service/logging/grafanacloudlogs/update.go b/pkg/commands/service/logging/grafanacloudlogs/update.go index a6757de40..ec22029f3 100644 --- a/pkg/commands/service/logging/grafanacloudlogs/update.go +++ b/pkg/commands/service/logging/grafanacloudlogs/update.go @@ -84,7 +84,7 @@ func NewUpdateCommand(parent argparser.Registerer, g *global.Data) *UpdateComman Dst: &c.ServiceName.Value, }) c.CmdClause.Flag("user", "Your Grafana Cloud Logs User ID.").Action(c.User.Set).StringVar(&c.User.Value) - c.CmdClause.Flag("auth-token", "Your Granana Access Policy Token").Action(c.Token.Set).StringVar(&c.Token.Value) + c.CmdClause.Flag("auth-token", "Your Grafana Access Policy Token").Action(c.Token.Set).StringVar(&c.Token.Value) c.CmdClause.Flag("url", "URL of your Grafana Instance").Action(c.URL.Set).StringVar(&c.URL.Value) c.CmdClause.Flag("index", "Stream identifier").Action(c.Index.Set).StringVar(&c.Index.Value) return &c From 84f41bbe63d2804ef697d3c3043877b2b7727d21 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:26:46 -0400 Subject: [PATCH 14/32] spelling: happens Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/compute/serve.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/compute/serve.go b/pkg/commands/compute/serve.go index 0763db294..932685be9 100644 --- a/pkg/commands/compute/serve.go +++ b/pkg/commands/compute/serve.go @@ -1253,7 +1253,7 @@ func watchFiles(root string, gi *ignore.GitIgnore, verbose bool, s *fstexec.Stre // We do this because if we didn't, then we'd get an error after one // restart of the viceroy executable: "os: process already finished". // - // This error happens happens because the compute.watchFiles() function is + // This error happens because the compute.watchFiles() function is // run in a goroutine and so it will keep running with a copy of the // fstexec.Streaming command instance that wraps a process which has // already been terminated. From 2dd49ea3fe5c9267c3209e97735210cb5995689d Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:37:10 -0400 Subject: [PATCH 15/32] spelling: log file size Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/errors/log.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/errors/log.go b/pkg/errors/log.go index 4b8bf2324..aa28ef273 100644 --- a/pkg/errors/log.go +++ b/pkg/errors/log.go @@ -212,8 +212,7 @@ var logMutex sync.Mutex // when that call can be handled internally by the .Add() method. var Now = time.Now -// FileRotationSize represents the size the log file needs to be before we -// truncate it. +// FileRotationSize represents the log file size before we truncate it. // // NOTE: To enable easier testing of the log rotation logic, we don't define // this as a constant but as a variable so the test file can mutate the value From e36f367db4670f47284bb04823551f4bbd4fd175 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:38:59 -0400 Subject: [PATCH 16/32] spelling: missing Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/service/logging/scalyr/scalyr_integration_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/service/logging/scalyr/scalyr_integration_test.go b/pkg/commands/service/logging/scalyr/scalyr_integration_test.go index 9df630455..4057babb2 100644 --- a/pkg/commands/service/logging/scalyr/scalyr_integration_test.go +++ b/pkg/commands/service/logging/scalyr/scalyr_integration_test.go @@ -177,7 +177,7 @@ func createScalyrOK(_ context.Context, i *fastly.CreateScalyrInput) (*fastly.Sca ServiceVersion: fastly.ToPointer(i.ServiceVersion), } - // Avoids null pointer dereference for test cases with missing required params. + // Avoids null pointer dereference for test cases missing required params. // If omitted, tests are guaranteed to panic. if i.Name != nil { s.Name = i.Name From 7d38944c3c4f18e0c096fba1dadbb1e7de97f0bf Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:17:18 -0400 Subject: [PATCH 17/32] spelling: mutually Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/errors/errors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/errors/errors.go b/pkg/errors/errors.go index 14347a600..035c78c41 100644 --- a/pkg/errors/errors.go +++ b/pkg/errors/errors.go @@ -177,7 +177,7 @@ var ErrInvalidKVCombo = RemediationError{ } // ErrInvalidStdinFileDirCombo means the user provided more than one of --stdin, -// --file or --dir flags, which are mutally exclusive behaviours. +// --file or --dir flags, which are mutually exclusive behaviours. var ErrInvalidStdinFileDirCombo = RemediationError{ Inner: fmt.Errorf("invalid flag combination"), Remediation: "Use only one of --stdin, --file or --dir.", From 082c53b0daa79e629d098f0de74aae3b2f2055e5 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:50:01 -0400 Subject: [PATCH 18/32] spelling: nonexistent Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/config/migrate_auth_test.go | 10 +++++----- pkg/mock/config_file.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/config/migrate_auth_test.go b/pkg/config/migrate_auth_test.go index 7db3423f2..1d204ad9b 100644 --- a/pkg/config/migrate_auth_test.go +++ b/pkg/config/migrate_auth_test.go @@ -390,10 +390,10 @@ func TestAuthToken_CRUD(t *testing.T) { t.Fatalf("expected default %q, got %q", "second", f.Auth.Default) } - // Try to set default to a non-existent token. + // Try to set default to a nonexistent token. err = f.SetDefaultAuthToken("nonexistent") if err == nil { - t.Fatal("expected error when setting default to non-existent token") + t.Fatal("expected error when setting default to nonexistent token") } // Delete a non-default token. @@ -412,10 +412,10 @@ func TestAuthToken_CRUD(t *testing.T) { t.Fatalf("expected default to remain %q, got %q", "second", f.Auth.Default) } - // Delete a non-existent token. + // Delete a nonexistent token. deleted = f.DeleteAuthToken("nonexistent") if deleted { - t.Fatal("expected DeleteAuthToken to return false for non-existent token") + t.Fatal("expected DeleteAuthToken to return false for nonexistent token") } // Delete from nil tokens map. @@ -532,7 +532,7 @@ func TestGetDefaultAuthToken(t *testing.T) { f.Auth.Default = "ghost" name, tok = f.GetDefaultAuthToken() if name != "" || tok != nil { - t.Fatalf("expected empty name and nil token when default references non-existent token, got name=%q tok=%v", name, tok) + t.Fatalf("expected empty name and nil token when default references nonexistent token, got name=%q tok=%v", name, tok) } } diff --git a/pkg/mock/config_file.go b/pkg/mock/config_file.go index f4728a2e8..eb7d71c1d 100644 --- a/pkg/mock/config_file.go +++ b/pkg/mock/config_file.go @@ -30,7 +30,7 @@ func (c *ConfigFile) Write(config any) error { } // NewNonExistentConfigFile is a test helper function which constructs a new -// non-existent config file interface. +// nonexistent config file interface. func NewNonExistentConfigFile() *ConfigFile { return &ConfigFile{ PathFn: func() string { From 1285eef3d33e5b137d21c47ad19c097fe77e03dc Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:17:50 -0400 Subject: [PATCH 19/32] spelling: permission Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/objectstorage/accesskeys/accesskeys_test.go | 4 ++-- pkg/text/accesskey.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/commands/objectstorage/accesskeys/accesskeys_test.go b/pkg/commands/objectstorage/accesskeys/accesskeys_test.go index b1393ab3c..c0da35e63 100644 --- a/pkg/commands/objectstorage/accesskeys/accesskeys_test.go +++ b/pkg/commands/objectstorage/accesskeys/accesskeys_test.go @@ -303,11 +303,11 @@ Created (UTC): 2021-06-15 23:00 `) + "\n" var listAccessKeysString = strings.TrimSpace(` -ID Secret Description Permssion Buckets Created At +ID Secret Description Permission Buckets Created At foo bar bat read-only-objects all 0001-01-01 00:00:00 +0000 UTC foobar baz bizz read-only-objects [b1 b2] 0001-01-01 00:00:00 +0000 UTC `) + "\n" var zeroListAccessKeysString = strings.TrimSpace(` -ID Secret Description Permssion Buckets Created At +ID Secret Description Permission Buckets Created At `) + "\n" diff --git a/pkg/text/accesskey.go b/pkg/text/accesskey.go index 33a3bf568..5caccf47e 100644 --- a/pkg/text/accesskey.go +++ b/pkg/text/accesskey.go @@ -21,7 +21,7 @@ func PrintAccessKey(out io.Writer, accessKey *accesskeys.AccessKey) { // PrintAccessKeyTbl displays access keys in a table format. func PrintAccessKeyTbl(out io.Writer, accessKeys []accesskeys.AccessKey) { tbl := NewTable(out) - tbl.AddHeader("ID", "Secret", "Description", "Permssion", "Buckets", "Created At") + tbl.AddHeader("ID", "Secret", "Description", "Permission", "Buckets", "Created At") if accessKeys == nil { tbl.Print() From f19ee9aaeeb3ee3de274a61151f24a97c7f30d7d Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:50:49 -0400 Subject: [PATCH 20/32] spelling: please Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 15632bd5a..c2617383c 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Refer to [CONTRIBUTING.md](https://github.com/fastly/cli/blob/main/CONTRIBUTING. If you encounter any non-security-related bug or unexpected behavior, please [file an issue][bug] using the bug report template. -Please also check the [CHANGELOG](https://github.com/fastly/cli/blob/main/CHANGELOG.md) for any breaking-changes or migration guidance. +Please check the [CHANGELOG](https://github.com/fastly/cli/blob/main/CHANGELOG.md) for any breaking-changes or migration guidance. ### Security issues From 744d9a88dd59292a7e0c5f1316882f13b1a7ba32 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:51:02 -0400 Subject: [PATCH 21/32] spelling: preexisting Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/compute/language_go.go | 2 +- pkg/commands/compute/language_toolchain.go | 2 +- pkg/config/config.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/commands/compute/language_go.go b/pkg/commands/compute/language_go.go index 161863d84..98d4d23c1 100644 --- a/pkg/commands/compute/language_go.go +++ b/pkg/commands/compute/language_go.go @@ -203,7 +203,7 @@ func (g *Go) Build() error { // We do this because the 0.2.0 release of the compute-sdk-go bumps the TinyGo // version requirement to 0.28.1 and we want to avoid any scenarios where a // bump in SDK version causes the user's build to break (which would happen for -// users with a pre-existing project who happen to update their CLI version: the +// users with a preexisting project who happen to update their CLI version: the // new CLI version would have a TinyGo constraint that would be higher than // before and would stop their build from working). // diff --git a/pkg/commands/compute/language_toolchain.go b/pkg/commands/compute/language_toolchain.go index 695a8e81d..d1edd2214 100644 --- a/pkg/commands/compute/language_toolchain.go +++ b/pkg/commands/compute/language_toolchain.go @@ -86,7 +86,7 @@ type BuildToolchain struct { // Build compiles the user's source code into a Wasm binary. func (bt BuildToolchain) Build() error { - // Make sure to delete any pre-existing binary otherwise prior metadata will + // Make sure to delete any preexisting binary otherwise prior metadata will // continue to be persisted. if _, err := os.Stat(binWasmPath); err == nil { os.Remove(binWasmPath) diff --git a/pkg/config/config.go b/pkg/config/config.go index 5cc43e6af..c64538fa8 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -114,7 +114,7 @@ type Go struct { TinyGoConstraint string `toml:"tinygo_constraint"` // TinyGoConstraintFallback is a fallback `tinygo` version for users who have - // a pre-existing project with a 0.1.x Fastly Go SDK specified. + // a preexisting project with a 0.1.x Fastly Go SDK specified. TinyGoConstraintFallback string `toml:"tinygo_constraint_fallback"` // ToolchainConstraint is the `go` version that we support with WASI. From 97849cc3a51344c93e237dc6f442067f4acf7307 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:18:34 -0400 Subject: [PATCH 22/32] spelling: prioritize Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/app/run.go | 2 +- pkg/commands/compute/build.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/app/run.go b/pkg/app/run.go index 8d140a58e..805e67745 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -255,7 +255,7 @@ func Exec(data *global.Data) error { } // User can set env.DebugMode env var or the --debug-mode boolean flag. - // This will prioritise the flag over the env var. + // This will prioritize the flag over the env var. if data.Flags.Debug { data.Env.DebugMode = "true" } diff --git a/pkg/commands/compute/build.go b/pkg/commands/compute/build.go index b8833a1ad..6ac5a88d7 100644 --- a/pkg/commands/compute/build.go +++ b/pkg/commands/compute/build.go @@ -672,7 +672,7 @@ func updateWasmtools( // identifyToolchain determines the programming language. // -// It prioritises the --language flag over the manifest field. +// It prioritizes the --language flag over the manifest field. // Will error if neither are provided. // Lastly, it will normalise with a trim and lowercase. func identifyToolchain(c *BuildCommand) (string, error) { From cc2a0e5fd0cd869fbf0d874de97528414bf31d24 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:28:09 -0400 Subject: [PATCH 23/32] spelling: run Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- TESTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TESTING.md b/TESTING.md index afa89e34c..561699af3 100644 --- a/TESTING.md +++ b/TESTING.md @@ -44,7 +44,7 @@ When running the tests locally, if you don't have the relevant language ecosyste > **NOTE**: you might notice a discrepancy between CI and your local environment which is caused by the difference in Rust toolchain versions as defined in .github/workflows/pr_test.yml which specifies the version required to be tested for in CI. Running `rustup toolchain install ` and `rustup target add wasm32-wasip1 --toolchain ` will resolve any failing integration tests you may be running locally. -To the run the full test suite: +To run the full test suite: ```sh TEST_COMPUTE_INIT=1 TEST_COMPUTE_BUILD=1 TEST_COMPUTE_DEPLOY=1 TEST_COMMAND=gotest make all From 6833df3a37ac63113a69dab39fab12fb755a0469 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:39:24 -0400 Subject: [PATCH 24/32] spelling: set up Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/testutil/scenarios.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testutil/scenarios.go b/pkg/testutil/scenarios.go index 9b575df2f..df95cadcf 100644 --- a/pkg/testutil/scenarios.go +++ b/pkg/testutil/scenarios.go @@ -81,7 +81,7 @@ type PathContentFlag struct { Content func() string } -// EnvConfig provides the details required to setup a temporary test +// EnvConfig provides the details required to set up a temporary test // environment, and optionally a function to run which accepts the // environment directory and can modify fields in the CLIScenario. type EnvConfig struct { From 32ffaa2962cf111eab2772ba39c4eecca434ae76 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:19:50 -0400 Subject: [PATCH 25/32] spelling: suppress Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/compute/init_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/commands/compute/init_test.go b/pkg/commands/compute/init_test.go index b04f13c63..c1eafbfe7 100644 --- a/pkg/commands/compute/init_test.go +++ b/pkg/commands/compute/init_test.go @@ -515,7 +515,7 @@ func TestInit_ExistingService(t *testing.T) { expectInManifest []string expectNoManifest bool expectInError string - suppresBeacon bool + suppressBeacon bool }{ { name: "when the service exists", @@ -624,7 +624,7 @@ func TestInit_ExistingService(t *testing.T) { args: testutil.SplitArgs("compute init --from LsyQ2UXDGk6d4EN"), expectInError: "--from url seems invalid", // Not a valid URL OR Service ID - suppresBeacon: true, + suppressBeacon: true, }, { name: "service has a cloned_from value", @@ -778,7 +778,7 @@ func TestInit_ExistingService(t *testing.T) { t.Log(stdout.String()) - if testcase.suppresBeacon { + if testcase.suppressBeacon { testutil.AssertLength(t, 0, httpClient.Requests) } else { testutil.AssertLength(t, 1, httpClient.Requests) From bfa771b8b13637af30c150f01dd7da1749d550d1 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:16:31 -0400 Subject: [PATCH 26/32] spelling: test-rate-limit Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/service/ratelimit/ratelimit_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/service/ratelimit/ratelimit_test.go b/pkg/commands/service/ratelimit/ratelimit_test.go index 8ac03e9f3..66d23af83 100644 --- a/pkg/commands/service/ratelimit/ratelimit_test.go +++ b/pkg/commands/service/ratelimit/ratelimit_test.go @@ -143,7 +143,7 @@ func TestRateLimitList(t *testing.T) { testutil.RunCLIScenarios(t, []string{root.CommandName, sub.CommandName, "list"}, scenarios) } -func TesRateLimittUpdate(t *testing.T) { +func TestRateLimitUpdate(t *testing.T) { scenarios := []testutil.CLIScenario{ { Name: "validate UpdateERL API error", From 0bede0c8368bc6e3e4c8dd53a399c350874a4261 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:20:34 -0400 Subject: [PATCH 27/32] spelling: that Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/commands/compute/serve.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/compute/serve.go b/pkg/commands/compute/serve.go index 932685be9..c98db32a5 100644 --- a/pkg/commands/compute/serve.go +++ b/pkg/commands/compute/serve.go @@ -928,7 +928,7 @@ func (c *ServeCommand) startPushpin(spinner text.Spinner, out io.Writer) (pushpi // - path to the routes file to use // - A routes file that sets up the routes. In our case, we: // - wires up a backend name (id) to the server host - // - if the backend sets an override host, then we set thatt + // - if the backend sets an override host, then we set that // - if the backend enables HTTPS, then we enable that // - if the backend has a path prefix, then we set that up // - enables WebSocket-over-HTTP From b89b67a4e58cf6fae7bbf816137d3c2d55a4a8a3 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:27:29 -0400 Subject: [PATCH 28/32] spelling: they Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- DEVELOPMENT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 5d446ecdf..527f868ef 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -68,7 +68,7 @@ The resulting configuration is then saved to disk at `./pkg/config/config.toml` When a user installs the CLI for the first time, they'll have no existing config and so the embedded config will be used. In the future, when the user updates their CLI, the existing config they have will be used. -If the config has changed in any way, then you (the CLI developer) should ensure the `config_version` number is bumped before publishing a new CLI release. This is because when the user updates to that new CLI version and the invoke the CLI, the CLI will identify a mismatch between the user's local config version and the embedded config version. This will cause the embedded config to be merged with the local config and consequently the user's config will be updated to include the new fields. +If the config has changed in any way, then you (the CLI developer) should ensure the `config_version` number is bumped before publishing a new CLI release. This is because when the user updates to that new CLI version and they invoke the CLI, the CLI will identify a mismatch between the user's local config version and the embedded config version. This will cause the embedded config to be merged with the local config and consequently the user's config will be updated to include the new fields. > **NOTE:** The CLI does provide a `fastly config --reset` option that resets the config to a version compatible with the user's current CLI version. This is fallback for users who run into issues for whatever reason. From a8cfebd1726b0e3dbcf049e2b4acc76e11bfc618 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:27:09 -0400 Subject: [PATCH 29/32] spelling: to Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/auth/auth.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/auth/auth.go b/pkg/auth/auth.go index 44814ea42..93b174a6f 100644 --- a/pkg/auth/auth.go +++ b/pkg/auth/auth.go @@ -30,7 +30,7 @@ const ClientID = "fastly-cli" // redirectPath is the path in the internal webserver which will receive the authorization code. const redirectPath = "/callback" -// redirectURL is the endpoint the auth provider will pass an authorization code to. +// redirectURL is the endpoint to which the auth provider will pass an authorization code. const redirectURL = "http://localhost:8080" + redirectPath // OIDCMetadata is OpenID Connect's metadata discovery mechanism. From 0ba33479f47c6c9d682b9cf2c32b4c38014f6cc8 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:21:06 -0400 Subject: [PATCH 30/32] spelling: update Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- .../service/imageoptimizerdefaults/imageoptimizer_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go b/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go index 48fd47857..d06390dad 100644 --- a/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go +++ b/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go @@ -45,7 +45,7 @@ func TestImageOptimizerDefaultsUpdate(t *testing.T) { WantOutput: "Updated Image Optimizer default settings for service 123 (version 1)\n\nAllow Video: true\nJPEG Quality: 85\nJPEG Type: auto\nResize Filter: lanczos3\nUpscale: false\nWebP: true\nWebP Quality: 85\n", }, { - Name: "validate successful upate of the --resize, --webp-quality and --jpeg-quality flags", + Name: "validate successful update of the --resize, --webp-quality and --jpeg-quality flags", Args: "--service-id 123 --version 1 --resize-filter bicubic --webp-quality 90 --jpeg-quality 80", API: &mock.API{ ListVersionsFn: testutil.ListVersions, From 9d5a13b0cc6c958290e2727b09957c4f91868f27 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 23:21:22 -0400 Subject: [PATCH 31/32] spelling: validate Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- .../service/imageoptimizerdefaults/imageoptimizer_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go b/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go index d06390dad..4fdbe7871 100644 --- a/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go +++ b/pkg/commands/service/imageoptimizerdefaults/imageoptimizer_test.go @@ -36,7 +36,7 @@ func TestImageOptimizerDefaultsUpdate(t *testing.T) { WantError: "problem with field 'ResizeFilter, Webp, WebpQuality, JpegType, JpegQuality, Upscale, AllowVideo': at least one of the available optional fields is required", }, { - Name: "valudate successful boolean updates of webp, upscale and allow-video", + Name: "validate successful boolean updates of webp, upscale and allow-video", Args: "--service-id 123 --version 1 --webp=true --upscale=false --allow-video=true", API: &mock.API{ ListVersionsFn: testutil.ListVersions, From 18a93f08090325c639d407e0ee21233851e30fe5 Mon Sep 17 00:00:00 2001 From: Josh Soref <2119212+jsoref@users.noreply.github.com> Date: Sat, 25 Apr 2026 22:39:17 -0400 Subject: [PATCH 32/32] spelling: whether or not Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com> --- pkg/argparser/flags.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/argparser/flags.go b/pkg/argparser/flags.go index 460713ab7..633d50282 100644 --- a/pkg/argparser/flags.go +++ b/pkg/argparser/flags.go @@ -362,7 +362,7 @@ func (j *JSONOutput) JSONFlag() BoolFlagOpts { } } -// WriteJSON checks whether the enabled flag is set or not. If set, +// WriteJSON checks whether or not the enabled flag is set. If set, // then the given value is written as JSON to out. Otherwise, false is returned. func (j *JSONOutput) WriteJSON(out io.Writer, value any) (bool, error) { if !j.Enabled {