MCPcopy
hub / github.com/cli/cli / StopCodespace

Method StopCodespace

pkg/cmd/codespace/stop.go:40–109  ·  view source on GitHub ↗
(ctx context.Context, opts *stopOptions)

Source from the content-addressed store, hash-verified

38}
39
40func (a *App) StopCodespace(ctx context.Context, opts *stopOptions) error {
41 var (
42 codespaceName = opts.selector.codespaceName
43 repoName = opts.selector.repoName
44 ownerName = opts.userName
45 )
46
47 if codespaceName == "" {
48 var codespaces []*api.Codespace
49 err := a.RunWithProgress("Fetching codespaces", func() (err error) {
50 codespaces, err = a.apiClient.ListCodespaces(ctx, api.ListCodespacesOptions{
51 RepoName: repoName,
52 OrgName: opts.orgName,
53 UserName: ownerName,
54 })
55 return
56 })
57 if err != nil {
58 return fmt.Errorf("failed to list codespaces: %w", err)
59 }
60
61 var runningCodespaces []*api.Codespace
62 for _, c := range codespaces {
63 cs := codespace{c}
64 if cs.running() {
65 runningCodespaces = append(runningCodespaces, c)
66 }
67 }
68 if len(runningCodespaces) == 0 {
69 return errors.New("no running codespaces")
70 }
71
72 includeOwner := opts.orgName != ""
73 skipPromptForSingleOption := repoName != ""
74 codespace, err := chooseCodespaceFromList(ctx, runningCodespaces, includeOwner, skipPromptForSingleOption)
75 if err != nil {
76 return fmt.Errorf("failed to choose codespace: %w", err)
77 }
78 codespaceName = codespace.Name
79 ownerName = codespace.Owner.Login
80 } else {
81 var c *api.Codespace
82 err := a.RunWithProgress("Fetching codespace", func() (err error) {
83 if opts.orgName == "" {
84 c, err = a.apiClient.GetCodespace(ctx, codespaceName, false)
85 } else {
86 c, err = a.apiClient.GetOrgMemberCodespace(ctx, opts.orgName, ownerName, codespaceName)
87 }
88 return
89 })
90 if err != nil {
91 return fmt.Errorf("failed to get codespace: %q: %w", codespaceName, err)
92 }
93
94 cs := codespace{c}
95 if !cs.running() {
96 return fmt.Errorf("codespace %q is not running", codespaceName)
97 }

Callers 1

TestApp_StopCodespaceFunction · 0.95

Calls 8

RunWithProgressMethod · 0.95
runningMethod · 0.95
chooseCodespaceFromListFunction · 0.85
ListCodespacesMethod · 0.65
ErrorfMethod · 0.65
GetCodespaceMethod · 0.65
GetOrgMemberCodespaceMethod · 0.65
StopCodespaceMethod · 0.65

Tested by 1

TestApp_StopCodespaceFunction · 0.76