@@ -39,13 +39,22 @@ func (r *RootCmd) update() *serpent.Command {
39
39
// updating. Simply performing a new start transition may not work if the
40
40
// template specifies ignore_changes.
41
41
if workspace .LatestBuild .Transition == codersdk .WorkspaceTransitionStart {
42
- build , err := stopWorkspace (inv , client , workspace , bflags )
43
- if err != nil {
44
- return xerrors .Errorf ("stop workspace: %w" , err )
45
- }
46
- // Wait for the stop to complete.
47
- if err := cliui .WorkspaceBuild (inv .Context (), inv .Stdout , client , build .ID ); err != nil {
48
- return xerrors .Errorf ("wait for stop: %w" , err )
42
+ // It's polite to ask the user before stopping their workspace.
43
+ cliui .Info (inv .Stdout , "Your workspace is currently running. We recommend stopping it before proceeding." )
44
+ if _ , err := cliui .Prompt (inv , cliui.PromptOptions {
45
+ Text : "Confirm stop workspace?" ,
46
+ IsConfirm : true ,
47
+ }); err != nil {
48
+ cliui .Warnf (inv .Stderr , "Updating without stop." )
49
+ } else {
50
+ build , err := stopWorkspace (inv , client , workspace , bflags )
51
+ if err != nil {
52
+ return xerrors .Errorf ("stop workspace: %w" , err )
53
+ }
54
+ // Wait for the stop to complete.
55
+ if err := cliui .WorkspaceBuild (inv .Context (), inv .Stdout , client , build .ID ); err != nil {
56
+ return xerrors .Errorf ("wait for stop: %w" , err )
57
+ }
49
58
}
50
59
}
51
60
0 commit comments