diff --git a/cli/create.go b/cli/create.go
index 09a1d2c9c4..325e2515c9 100644
--- a/cli/create.go
+++ b/cli/create.go
@@ -271,6 +271,11 @@ func (r *RootCmd) Create(opts CreateOptions) *serpent.Command {
return xerrors.Errorf("can't parse given parameter defaults: %w", err)
}
+ cliEphemeralParameters, err := asWorkspaceBuildParameters(parameterFlags.ephemeralParameters)
+ if err != nil {
+ return xerrors.Errorf("can't parse given ephemeral parameter values: %w", err)
+ }
+
var sourceWorkspaceParameters []codersdk.WorkspaceBuildParameter
if copyParametersFrom != "" {
sourceWorkspaceParameters, err = client.WorkspaceBuildParameters(inv.Context(), sourceWorkspace.LatestBuild.ID)
@@ -330,6 +335,9 @@ func (r *RootCmd) Create(opts CreateOptions) *serpent.Command {
RichParameters: cliBuildParameters,
RichParameterDefaults: cliBuildParameterDefaults,
+ PromptEphemeralParameters: parameterFlags.promptEphemeralParameters,
+ EphemeralParameters: cliEphemeralParameters,
+
SourceWorkspaceParameters: sourceWorkspaceParameters,
UseParameterDefaults: parameterFlags.useParameterDefaults,
@@ -455,9 +463,8 @@ func (r *RootCmd) Create(opts CreateOptions) *serpent.Command {
},
cliui.SkipPromptOption(),
)
- cmd.Options = append(cmd.Options, parameterFlags.cliParameters()...)
- cmd.Options = append(cmd.Options, parameterFlags.cliParameterDefaults()...)
- cmd.Options = append(cmd.Options, parameterFlags.useParameterDefaultsOption())
+ cmd.Options = append(cmd.Options, parameterFlags.allOptions()...)
+
orgContext.AttachOptions(cmd)
return cmd
}
diff --git a/cli/testdata/coder_create_--help.golden b/cli/testdata/coder_create_--help.golden
index b1f5968c7a..87b99c6c60 100644
--- a/cli/testdata/coder_create_--help.golden
+++ b/cli/testdata/coder_create_--help.golden
@@ -13,13 +13,29 @@ OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
+ --always-prompt bool
+ Always prompt all parameters. Does not pull parameter values from
+ existing workspace.
+
--automatic-updates string, $CODER_WORKSPACE_AUTOMATIC_UPDATES (default: never)
Specify automatic updates setting for the workspace (accepts 'always'
or 'never').
+ --build-option string-array, $CODER_BUILD_OPTION
+ Build option value in the format "name=value".
+ DEPRECATED: Use --ephemeral-parameter instead.
+
+ --build-options bool
+ Prompt for one-time build options defined with ephemeral parameters.
+ DEPRECATED: Use --prompt-ephemeral-parameters instead.
+
--copy-parameters-from string, $CODER_WORKSPACE_COPY_PARAMETERS_FROM
Specify the source workspace name to copy parameters from.
+ --ephemeral-parameter string-array, $CODER_EPHEMERAL_PARAMETER
+ Set the value of ephemeral parameters defined in the template. The
+ format is "name=value".
+
--no-wait bool, $CODER_CREATE_NO_WAIT
Return immediately after creating the workspace. The build will run in
the background.
@@ -34,6 +50,11 @@ OPTIONS:
Specify the name of a template version preset. Use 'none' to
explicitly indicate that no preset should be used.
+ --prompt-ephemeral-parameters bool, $CODER_PROMPT_EPHEMERAL_PARAMETERS
+ Prompt to set values of ephemeral parameters defined in the template.
+ If a value has been set via --ephemeral-parameter, it will not be
+ prompted for.
+
--rich-parameter-file string, $CODER_RICH_PARAMETER_FILE
Specify a file path with values for rich parameters defined in the
template. The file should be in YAML format, containing key-value
diff --git a/docs/admin/templates/extending-templates/parameters.md b/docs/admin/templates/extending-templates/parameters.md
index 57d2582bc8..3eb7957a73 100644
--- a/docs/admin/templates/extending-templates/parameters.md
+++ b/docs/admin/templates/extending-templates/parameters.md
@@ -232,8 +232,8 @@ parameters, the **Create workspace** button is disabled until the issues are res
Ephemeral parameters are introduced to users in order to model specific
behaviors in a Coder workspace, such as reverting to a previous image, restoring
from a volume snapshot, or building a project without using cache. These
-parameters are only settable when starting, updating, or restarting a workspace
-and do not persist after the workspace is stopped.
+parameters are settable when creating, starting, updating, or restarting a workspace
+but do not persist after the workspace is stopped.
Since these parameters are ephemeral in nature, subsequent builds proceed in the
standard manner:
diff --git a/docs/reference/cli/create.md b/docs/reference/cli/create.md
index 7ea327ed5a..7e6fd1ce2c 100644
--- a/docs/reference/cli/create.md
+++ b/docs/reference/cli/create.md
@@ -100,6 +100,41 @@ Return immediately after creating the workspace. The build will run in the backg
Bypass confirmation prompts.
+### --build-option
+
+| | |
+|-------------|----------------------------------|
+| Type | string-array |
+| Environment | $CODER_BUILD_OPTION |
+
+Build option value in the format "name=value".
+
+### --build-options
+
+| | |
+|------|-------------------|
+| Type | bool |
+
+Prompt for one-time build options defined with ephemeral parameters.
+
+### --ephemeral-parameter
+
+| | |
+|-------------|-----------------------------------------|
+| Type | string-array |
+| Environment | $CODER_EPHEMERAL_PARAMETER |
+
+Set the value of ephemeral parameters defined in the template. The format is "name=value".
+
+### --prompt-ephemeral-parameters
+
+| | |
+|-------------|-------------------------------------------------|
+| Type | bool |
+| Environment | $CODER_PROMPT_EPHEMERAL_PARAMETERS |
+
+Prompt to set values of ephemeral parameters defined in the template. If a value has been set via --ephemeral-parameter, it will not be prompted for.
+
### --parameter
| | |
@@ -136,6 +171,14 @@ Rich parameter default values in the format "name=value".
Automatically accept parameter defaults when no value is provided.
+### --always-prompt
+
+| | |
+|------|-------------------|
+| Type | bool |
+
+Always prompt all parameters. Does not pull parameter values from existing workspace.
+
### -O, --org
| | |
diff --git a/docs/reference/cli/external-workspaces_create.md b/docs/reference/cli/external-workspaces_create.md
index 26c104d03c..cb15a0fc6d 100644
--- a/docs/reference/cli/external-workspaces_create.md
+++ b/docs/reference/cli/external-workspaces_create.md
@@ -100,6 +100,41 @@ Return immediately after creating the workspace. The build will run in the backg
Bypass confirmation prompts.
+### --build-option
+
+| | |
+|-------------|----------------------------------|
+| Type | string-array |
+| Environment | $CODER_BUILD_OPTION |
+
+Build option value in the format "name=value".
+
+### --build-options
+
+| | |
+|------|-------------------|
+| Type | bool |
+
+Prompt for one-time build options defined with ephemeral parameters.
+
+### --ephemeral-parameter
+
+| | |
+|-------------|-----------------------------------------|
+| Type | string-array |
+| Environment | $CODER_EPHEMERAL_PARAMETER |
+
+Set the value of ephemeral parameters defined in the template. The format is "name=value".
+
+### --prompt-ephemeral-parameters
+
+| | |
+|-------------|-------------------------------------------------|
+| Type | bool |
+| Environment | $CODER_PROMPT_EPHEMERAL_PARAMETERS |
+
+Prompt to set values of ephemeral parameters defined in the template. If a value has been set via --ephemeral-parameter, it will not be prompted for.
+
### --parameter
| | |
@@ -136,6 +171,14 @@ Rich parameter default values in the format "name=value".
Automatically accept parameter defaults when no value is provided.
+### --always-prompt
+
+| | |
+|------|-------------------|
+| Type | bool |
+
+Always prompt all parameters. Does not pull parameter values from existing workspace.
+
### -O, --org
| | |
diff --git a/enterprise/cli/testdata/coder_external-workspaces_create_--help.golden b/enterprise/cli/testdata/coder_external-workspaces_create_--help.golden
index 6f33cda59b..12c826a5fa 100644
--- a/enterprise/cli/testdata/coder_external-workspaces_create_--help.golden
+++ b/enterprise/cli/testdata/coder_external-workspaces_create_--help.golden
@@ -13,13 +13,29 @@ OPTIONS:
-O, --org string, $CODER_ORGANIZATION
Select which organization (uuid or name) to use.
+ --always-prompt bool
+ Always prompt all parameters. Does not pull parameter values from
+ existing workspace.
+
--automatic-updates string, $CODER_WORKSPACE_AUTOMATIC_UPDATES (default: never)
Specify automatic updates setting for the workspace (accepts 'always'
or 'never').
+ --build-option string-array, $CODER_BUILD_OPTION
+ Build option value in the format "name=value".
+ DEPRECATED: Use --ephemeral-parameter instead.
+
+ --build-options bool
+ Prompt for one-time build options defined with ephemeral parameters.
+ DEPRECATED: Use --prompt-ephemeral-parameters instead.
+
--copy-parameters-from string, $CODER_WORKSPACE_COPY_PARAMETERS_FROM
Specify the source workspace name to copy parameters from.
+ --ephemeral-parameter string-array, $CODER_EPHEMERAL_PARAMETER
+ Set the value of ephemeral parameters defined in the template. The
+ format is "name=value".
+
--no-wait bool, $CODER_CREATE_NO_WAIT
Return immediately after creating the workspace. The build will run in
the background.
@@ -34,6 +50,11 @@ OPTIONS:
Specify the name of a template version preset. Use 'none' to
explicitly indicate that no preset should be used.
+ --prompt-ephemeral-parameters bool, $CODER_PROMPT_EPHEMERAL_PARAMETERS
+ Prompt to set values of ephemeral parameters defined in the template.
+ If a value has been set via --ephemeral-parameter, it will not be
+ prompted for.
+
--rich-parameter-file string, $CODER_RICH_PARAMETER_FILE
Specify a file path with values for rich parameters defined in the
template. The file should be in YAML format, containing key-value