MCPcopy
hub / github.com/cli/cli / viewRun

Function viewRun

pkg/cmd/release/view/view.go:75–129  ·  view source on GitHub ↗
(opts *ViewOptions)

Source from the content-addressed store, hash-verified

73}
74
75func viewRun(opts *ViewOptions) error {
76 httpClient, err := opts.HttpClient()
77 if err != nil {
78 return err
79 }
80
81 baseRepo, err := opts.BaseRepo()
82 if err != nil {
83 return err
84 }
85
86 ctx := context.Background()
87 var release *shared.Release
88
89 if opts.TagName == "" {
90 release, err = shared.FetchLatestRelease(ctx, httpClient, baseRepo)
91 if err != nil {
92 return err
93 }
94 } else {
95 release, err = shared.FetchRelease(ctx, httpClient, baseRepo, opts.TagName)
96 if err != nil {
97 return err
98 }
99 }
100
101 if opts.WebMode {
102 if opts.IO.IsStdoutTTY() {
103 fmt.Fprintf(opts.IO.ErrOut, "Opening %s in your browser.\n", text.DisplayURL(release.URL))
104 }
105 return opts.Browser.Browse(release.URL)
106 }
107
108 opts.IO.DetectTerminalTheme()
109 if err := opts.IO.StartPager(); err != nil {
110 fmt.Fprintf(opts.IO.ErrOut, "error starting pager: %v\n", err)
111 }
112 defer opts.IO.StopPager()
113
114 if opts.Exporter != nil {
115 return opts.Exporter.Write(opts.IO, release)
116 }
117
118 if opts.IO.IsStdoutTTY() {
119 if err := renderReleaseTTY(opts.IO, release); err != nil {
120 return err
121 }
122 } else {
123 if err := renderReleasePlain(opts.IO.Out, release); err != nil {
124 return err
125 }
126 }
127
128 return nil
129}
130
131func renderReleaseTTY(io *iostreams.IOStreams, release *shared.Release) error {
132 cs := io.ColorScheme()

Callers 2

Test_viewRunFunction · 0.70
NewCmdViewFunction · 0.70

Calls 12

FetchLatestReleaseFunction · 0.92
FetchReleaseFunction · 0.92
DisplayURLFunction · 0.92
renderReleaseTTYFunction · 0.85
renderReleasePlainFunction · 0.85
IsStdoutTTYMethod · 0.80
DetectTerminalThemeMethod · 0.80
StartPagerMethod · 0.80
StopPagerMethod · 0.80
BaseRepoMethod · 0.65
BrowseMethod · 0.65
WriteMethod · 0.65

Tested by 1

Test_viewRunFunction · 0.56