(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, bflags buildFlags)
| 66 | } |
| 67 | |
| 68 | func stopWorkspace(inv *serpent.Invocation, client *codersdk.Client, workspace codersdk.Workspace, bflags buildFlags) (codersdk.WorkspaceBuild, error) { |
| 69 | if workspace.LatestBuild.Job.Status == codersdk.ProvisionerJobPending { |
| 70 | // cliutil.WarnMatchedProvisioners also checks if the job is pending |
| 71 | // but we still want to avoid users spamming multiple builds that will |
| 72 | // not be picked up. |
| 73 | cliui.Warn(inv.Stderr, "The workspace is already stopping!") |
| 74 | cliutil.WarnMatchedProvisioners(inv.Stderr, workspace.LatestBuild.MatchedProvisioners, workspace.LatestBuild.Job) |
| 75 | if _, err := cliui.Prompt(inv, cliui.PromptOptions{ |
| 76 | Text: "Enqueue another stop?", |
| 77 | IsConfirm: true, |
| 78 | Default: cliui.ConfirmNo, |
| 79 | }); err != nil { |
| 80 | return codersdk.WorkspaceBuild{}, err |
| 81 | } |
| 82 | } |
| 83 | wbr := codersdk.CreateWorkspaceBuildRequest{ |
| 84 | Transition: codersdk.WorkspaceTransitionStop, |
| 85 | } |
| 86 | if bflags.provisionerLogDebug { |
| 87 | wbr.LogLevel = codersdk.ProvisionerLogLevelDebug |
| 88 | } |
| 89 | return client.CreateWorkspaceBuild(inv.Context(), workspace.ID, wbr) |
| 90 | } |
no test coverage detected