MCPcopy
hub / github.com/cli/cli / renderReleaseTTY

Function renderReleaseTTY

pkg/cmd/release/view/view.go:131–177  ·  view source on GitHub ↗
(io *iostreams.IOStreams, release *shared.Release)

Source from the content-addressed store, hash-verified

129}
130
131func renderReleaseTTY(io *iostreams.IOStreams, release *shared.Release) error {
132 cs := io.ColorScheme()
133 w := io.Out
134
135 fmt.Fprintf(w, "%s\n", cs.Bold(release.TagName))
136 if release.IsDraft {
137 fmt.Fprintf(w, "%s • ", cs.Red("Draft"))
138 } else if release.IsPrerelease {
139 fmt.Fprintf(w, "%s • ", cs.Yellow("Pre-release"))
140 }
141 if release.IsDraft {
142 fmt.Fprintln(w, cs.Mutedf("%s created this %s", release.Author.Login, text.FuzzyAgo(time.Now(), release.CreatedAt)))
143 } else {
144 fmt.Fprintln(w, cs.Mutedf("%s released this %s", release.Author.Login, text.FuzzyAgo(time.Now(), *release.PublishedAt)))
145 }
146
147 renderedDescription, err := markdown.Render(release.Body,
148 markdown.WithTheme(io.TerminalTheme()),
149 markdown.WithWrap(io.TerminalWidth()))
150 if err != nil {
151 return err
152 }
153 fmt.Fprintln(w, renderedDescription)
154
155 if len(release.Assets) > 0 {
156 fmt.Fprintln(w, cs.Bold("Assets"))
157 table := tableprinter.New(io, tableprinter.WithHeader("Name", "Digest", "Size"))
158 for _, a := range release.Assets {
159 table.AddField(a.Name)
160 if a.Digest == nil {
161 table.AddField("")
162 } else {
163 table.AddField(*a.Digest)
164 }
165 table.AddField(humanFileSize(a.Size))
166 table.EndRow()
167 }
168 err := table.Render()
169 if err != nil {
170 return err
171 }
172 fmt.Fprint(w, "\n")
173 }
174
175 fmt.Fprintln(w, cs.Mutedf("View on GitHub: %s", release.URL))
176 return nil
177}
178
179func renderReleasePlain(w io.Writer, release *shared.Release) error {
180 fmt.Fprintf(w, "title:\t%s\n", release.Name)

Callers 1

viewRunFunction · 0.85

Calls 15

FuzzyAgoFunction · 0.92
RenderFunction · 0.92
WithThemeFunction · 0.92
WithWrapFunction · 0.92
NewFunction · 0.92
WithHeaderFunction · 0.92
ColorSchemeMethod · 0.80
BoldMethod · 0.80
RedMethod · 0.80
YellowMethod · 0.80
MutedfMethod · 0.80
TerminalThemeMethod · 0.80

Tested by

no test coverage detected