(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, parameterFlags workspaceParameterFlags, buildFlags buildFlags, action WorkspaceCLIAction)
| 141 | } |
| 142 | |
| 143 | func buildWorkspaceStartRequest(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, parameterFlags workspaceParameterFlags, buildFlags buildFlags, action WorkspaceCLIAction) (codersdk.CreateWorkspaceBuildRequest, error) { |
| 144 | version := workspace.LatestBuild.TemplateVersionID |
| 145 | |
| 146 | if workspace.AutomaticUpdates == codersdk.AutomaticUpdatesAlways || workspace.TemplateRequireActiveVersion || action == WorkspaceUpdate { |
| 147 | version = workspace.TemplateActiveVersionID |
| 148 | if version != workspace.LatestBuild.TemplateVersionID { |
| 149 | action = WorkspaceUpdate |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | lastBuildParameters, err := client.WorkspaceBuildParameters(inv.Context(), workspace.LatestBuild.ID) |
| 154 | if err != nil { |
| 155 | return codersdk.CreateWorkspaceBuildRequest{}, err |
| 156 | } |
| 157 | |
| 158 | ephemeralParameters, err := asWorkspaceBuildParameters(parameterFlags.ephemeralParameters) |
| 159 | if err != nil { |
| 160 | return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse build options: %w", err) |
| 161 | } |
| 162 | |
| 163 | cliRichParameters, err := asWorkspaceBuildParameters(parameterFlags.richParameters) |
| 164 | if err != nil { |
| 165 | return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse rich parameters: %w", err) |
| 166 | } |
| 167 | |
| 168 | cliRichParameterDefaults, err := asWorkspaceBuildParameters(parameterFlags.richParameterDefaults) |
| 169 | if err != nil { |
| 170 | return codersdk.CreateWorkspaceBuildRequest{}, xerrors.Errorf("unable to parse rich parameter defaults: %w", err) |
| 171 | } |
| 172 | |
| 173 | buildParameters, err := prepWorkspaceBuild(inv, client, prepWorkspaceBuildArgs{ |
| 174 | Action: action, |
| 175 | TemplateVersionID: version, |
| 176 | NewWorkspaceName: workspace.Name, |
| 177 | LastBuildParameters: lastBuildParameters, |
| 178 | Owner: workspace.OwnerID.String(), |
| 179 | |
| 180 | PromptEphemeralParameters: parameterFlags.promptEphemeralParameters, |
| 181 | EphemeralParameters: ephemeralParameters, |
| 182 | PromptRichParameters: parameterFlags.promptRichParameters, |
| 183 | RichParameters: cliRichParameters, |
| 184 | RichParameterFile: parameterFlags.richParameterFile, |
| 185 | RichParameterDefaults: cliRichParameterDefaults, |
| 186 | UseParameterDefaults: parameterFlags.useParameterDefaults, |
| 187 | }) |
| 188 | if err != nil { |
| 189 | return codersdk.CreateWorkspaceBuildRequest{}, err |
| 190 | } |
| 191 | |
| 192 | wbr := codersdk.CreateWorkspaceBuildRequest{ |
| 193 | Transition: codersdk.WorkspaceTransitionStart, |
| 194 | RichParameterValues: buildParameters, |
| 195 | TemplateVersionID: version, |
| 196 | } |
| 197 | if buildFlags.provisionerLogDebug { |
| 198 | wbr.LogLevel = codersdk.ProvisionerLogLevelDebug |
| 199 | } |
| 200 | if buildFlags.reason != "" { |
no test coverage detected