MCPcopy
hub / github.com/cli/cli / editRun

Function editRun

pkg/cmd/pr/edit/edit.go:246–366  ·  view source on GitHub ↗
(opts *EditOptions)

Source from the content-addressed store, hash-verified

244}
245
246func editRun(opts *EditOptions) error {
247 httpClient, err := opts.HttpClient()
248 if err != nil {
249 return err
250 }
251
252 if opts.Detector == nil {
253 baseRepo, err := opts.BaseRepo()
254 if err != nil {
255 return err
256 }
257
258 cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*24)
259 opts.Detector = fd.NewDetector(cachedClient, baseRepo.RepoHost())
260 }
261
262 findOptions := shared.FindOptions{
263 Selector: opts.SelectorArg,
264 Fields: []string{"id", "author", "url", "title", "body", "baseRefName", "reviewRequests", "labels", "projectCards", "projectItems", "milestone"},
265 Detector: opts.Detector,
266 }
267
268 issueFeatures, err := opts.Detector.IssueFeatures()
269 if err != nil {
270 return err
271 }
272
273 // TODO ApiActorsSupported
274 if issueFeatures.ApiActorsSupported {
275 findOptions.Fields = append(findOptions.Fields, "assignedActors")
276 } else {
277 findOptions.Fields = append(findOptions.Fields, "assignees")
278 }
279
280 pr, repo, err := opts.Finder.Find(findOptions)
281 if err != nil {
282 return err
283 }
284
285 editable := opts.Editable
286 editable.Reviewers.Selectable = true
287 editable.Title.Default = pr.Title
288 editable.Body.Default = pr.Body
289 editable.Base.Default = pr.BaseRefName
290 editable.Reviewers.Default = pr.ReviewRequests.DisplayNames()
291 editable.Reviewers.DefaultLogins = pr.ReviewRequests.Logins()
292 // TODO ApiActorsSupported
293 if issueFeatures.ApiActorsSupported {
294 editable.ApiActorsSupported = true
295 editable.Assignees.Default = pr.AssignedActors.DisplayNames()
296 editable.Assignees.DefaultLogins = pr.AssignedActors.Logins()
297 } else {
298 editable.Assignees.Default = pr.Assignees.Logins()
299 }
300 editable.Labels.Default = pr.Labels.Names()
301 editable.Projects.Default = append(pr.ProjectCards.ProjectNames(), pr.ProjectItems.ProjectTitles()...)
302 projectItems := map[string]string{}
303 for _, n := range pr.ProjectItems.Nodes {

Callers 3

Test_editRunFunction · 0.70
NewCmdEditFunction · 0.70

Calls 15

NewCachedHTTPClientFunction · 0.92
NewClientFromHTTPFunction · 0.92
AssigneeSearchFuncFunction · 0.92
NewStringSetFunction · 0.92
reviewerSearchFuncFunction · 0.85
NamesMethod · 0.80
ProjectNamesMethod · 0.80
ProjectTitlesMethod · 0.80
AddValuesMethod · 0.80
updatePullRequestFunction · 0.70
BaseRepoMethod · 0.65
RepoHostMethod · 0.65

Tested by 2

Test_editRunFunction · 0.56