MCPcopy Index your code
hub / github.com/cli/cli / Delete

Method Delete

pkg/cmd/codespace/delete.go:92–207  ·  view source on GitHub ↗
(ctx context.Context, opts deleteOptions)

Source from the content-addressed store, hash-verified

90}
91
92func (a *App) Delete(ctx context.Context, opts deleteOptions) (err error) {
93 var codespaces []*api.Codespace
94 nameFilter := opts.codespaceName
95 if nameFilter == "" {
96 err = a.RunWithProgress("Fetching codespaces", func() (fetchErr error) {
97 userName := opts.userName
98 if userName == "" && opts.orgName != "" {
99 currentUser, fetchErr := a.apiClient.GetUser(ctx)
100 if fetchErr != nil {
101 return fetchErr
102 }
103 userName = currentUser.Login
104 }
105 codespaces, fetchErr = a.apiClient.ListCodespaces(ctx, api.ListCodespacesOptions{OrgName: opts.orgName, UserName: userName})
106 if opts.repoOwner != "" {
107 codespaces = filterCodespacesByRepoOwner(codespaces, opts.repoOwner)
108 }
109 return
110 })
111 if err != nil {
112 return fmt.Errorf("error getting codespaces: %w", err)
113 }
114
115 if !opts.deleteAll && opts.repoFilter == "" {
116 includeUsername := opts.orgName != ""
117 c, err := chooseCodespaceFromList(ctx, codespaces, includeUsername, false)
118 if err != nil {
119 return fmt.Errorf("error choosing codespace: %w", err)
120 }
121 nameFilter = c.Name
122 }
123 } else {
124 var codespace *api.Codespace
125 err := a.RunWithProgress("Fetching codespace", func() (fetchErr error) {
126 if opts.orgName == "" || opts.userName == "" {
127 codespace, fetchErr = a.apiClient.GetCodespace(ctx, nameFilter, false)
128 } else {
129 codespace, fetchErr = a.apiClient.GetOrgMemberCodespace(ctx, opts.orgName, opts.userName, opts.codespaceName)
130 }
131 return
132 })
133 if err != nil {
134 return fmt.Errorf("error fetching codespace information: %w", err)
135 }
136
137 codespaces = []*api.Codespace{codespace}
138 }
139
140 codespacesToDelete := make([]*api.Codespace, 0, len(codespaces))
141 lastUpdatedCutoffTime := opts.now().AddDate(0, 0, -int(opts.keepDays))
142 for _, c := range codespaces {
143 if nameFilter != "" && c.Name != nameFilter {
144 continue
145 }
146 if opts.repoFilter != "" && !strings.EqualFold(c.Repository.FullName, opts.repoFilter) {
147 continue
148 }
149

Callers 1

TestDeleteFunction · 0.95

Calls 13

RunWithProgressMethod · 0.95
chooseCodespaceFromListFunction · 0.85
confirmDeletionFunction · 0.85
IsStdoutTTYMethod · 0.80
GetUserMethod · 0.65
ListCodespacesMethod · 0.65
ErrorfMethod · 0.65
GetCodespaceMethod · 0.65
GetOrgMemberCodespaceMethod · 0.65
DeleteCodespaceMethod · 0.65
PrintfMethod · 0.65

Tested by 1

TestDeleteFunction · 0.76