MCPcopy
hub / github.com/cli/cli / listRun

Function listRun

pkg/cmd/release/list/list.go:67–148  ·  view source on GitHub ↗
(opts *ListOptions)

Source from the content-addressed store, hash-verified

65}
66
67func listRun(opts *ListOptions) error {
68 httpClient, err := opts.HttpClient()
69 if err != nil {
70 return err
71 }
72
73 baseRepo, err := opts.BaseRepo()
74 if err != nil {
75 return err
76 }
77
78 // TODO: immutableReleaseFullSupport
79 // The detector is not needed when covered GHES versions fully support
80 // immutable releases (probably when 3.18 goes EOL).
81 if opts.Detector == nil {
82 cachedClient := api.NewCachedHTTPClient(httpClient, time.Hour*24)
83 opts.Detector = fd.NewDetector(cachedClient, baseRepo.RepoHost())
84 }
85
86 releaseFeatures, err := opts.Detector.ReleaseFeatures()
87 if err != nil {
88 return err
89 }
90
91 releases, err := fetchReleases(httpClient, baseRepo, opts.LimitResults, opts.ExcludeDrafts, opts.ExcludePreReleases, opts.Order, releaseFeatures)
92 if err != nil {
93 return err
94 }
95
96 if len(releases) == 0 && opts.Exporter == nil {
97 return cmdutil.NewNoResultsError("no releases found")
98 }
99
100 if err := opts.IO.StartPager(); err == nil {
101 defer opts.IO.StopPager()
102 } else {
103 fmt.Fprintf(opts.IO.ErrOut, "failed to start pager: %v\n", err)
104 }
105
106 if opts.Exporter != nil {
107 return opts.Exporter.Write(opts.IO, releases)
108 }
109
110 table := tableprinter.New(opts.IO, tableprinter.WithHeader("Title", "Type", "Tag name", "Published"))
111 cs := opts.IO.ColorScheme()
112 for _, rel := range releases {
113 title := text.RemoveExcessiveWhitespace(rel.Name)
114 if title == "" {
115 title = rel.TagName
116 }
117 table.AddField(title)
118
119 badge := ""
120 var badgeColor func(string) string
121 if rel.IsLatest {
122 badge = "Latest"
123 badgeColor = cs.Green
124 } else if rel.IsDraft {

Callers 2

Test_listRunFunction · 0.70
NewCmdListFunction · 0.70

Calls 15

NewCachedHTTPClientFunction · 0.92
NewNoResultsErrorFunction · 0.92
NewFunction · 0.92
WithHeaderFunction · 0.92
fetchReleasesFunction · 0.85
StartPagerMethod · 0.80
StopPagerMethod · 0.80
ColorSchemeMethod · 0.80
AddTimeFieldMethod · 0.80
BaseRepoMethod · 0.65
RepoHostMethod · 0.65

Tested by 1

Test_listRunFunction · 0.56