From 8a6bfc90c2ff4cbf1b5d62bde316703325d53995 Mon Sep 17 00:00:00 2001 From: Philipp Schulte Date: Wed, 15 Jul 2026 15:19:18 -0600 Subject: [PATCH] fix(service-version): support autoclone when staging --- CHANGELOG.md | 2 ++ .../service/version/serviceversion_test.go | 20 +++++++++++++++++++ pkg/commands/service/version/stage.go | 6 ++++++ 3 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 927ea3c1c..fe7df0281 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### Bug Fixes: +- fix(service-version): support autoclone when staging a service version. ([#1850](https://github.com/fastly/cli/pull/1850)) + ### Enhancements: ### Dependencies: diff --git a/pkg/commands/service/version/serviceversion_test.go b/pkg/commands/service/version/serviceversion_test.go index 28a4e5b6c..f5ebde299 100644 --- a/pkg/commands/service/version/serviceversion_test.go +++ b/pkg/commands/service/version/serviceversion_test.go @@ -322,6 +322,26 @@ func TestVersionStage(t *testing.T) { EnvVars: map[string]string{"FASTLY_SERVICE_ID": ""}, WantError: "error parsing arguments: required flag --version not provided", }, + { + Name: "validate --autoclone stages a clone of an active version", + Args: "--service-id 123 --version 1 --autoclone", + API: &mock.API{ + GetVersionFn: testutil.GetVersion, + CloneVersionFn: testutil.CloneVersionResult(4), + ActivateVersionFn: stageVersionOK, + }, + WantOutput: "Staged service 123 version 4", + }, + { + Name: "validate --autoclone stages a clone of a locked version", + Args: "--service-id 123 --version 2 --autoclone", + API: &mock.API{ + GetVersionFn: testutil.GetVersion, + CloneVersionFn: testutil.CloneVersionResult(4), + ActivateVersionFn: stageVersionOK, + }, + WantOutput: "Staged service 123 version 4", + }, { Args: "--service-id 123 --version 3", API: &mock.API{ diff --git a/pkg/commands/service/version/stage.go b/pkg/commands/service/version/stage.go index 0a73e53c4..c8c22c20c 100644 --- a/pkg/commands/service/version/stage.go +++ b/pkg/commands/service/version/stage.go @@ -20,6 +20,7 @@ type StageCommand struct { Input fastly.ActivateVersionInput serviceName argparser.OptionalServiceNameID serviceVersion argparser.OptionalServiceVersion + autoClone argparser.OptionalAutoClone } // NewStageCommand returns a usable command registered under the parent. @@ -45,6 +46,10 @@ func NewStageCommand(parent argparser.Registerer, g *global.Data) *StageCommand Dst: &c.serviceVersion.Value, Required: true, }) + c.RegisterAutoCloneFlag(argparser.AutoCloneFlagOpts{ + Action: c.autoClone.Set, + Dst: &c.autoClone.Value, + }) return &c } @@ -53,6 +58,7 @@ func (c *StageCommand) Exec(_ io.Reader, out io.Writer) error { serviceID, serviceVersion, err := argparser.ServiceDetails(argparser.ServiceDetailsOpts{ Active: optional.Of(false), Locked: optional.Of(false), + AutoCloneFlag: c.autoClone, APIClient: c.Globals.APIClient, Manifest: *c.Globals.Manifest, Out: out,