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

Function diffRun

pkg/cmd/pr/diff/diff.go:120–186  ·  view source on GitHub ↗
(opts *DiffOptions)

Source from the content-addressed store, hash-verified

118}
119
120func diffRun(opts *DiffOptions) error {
121 findOptions := shared.FindOptions{
122 Selector: opts.SelectorArg,
123 Fields: []string{"number"},
124 }
125
126 if opts.BrowserMode {
127 findOptions.Fields = []string{"url"}
128 }
129
130 pr, baseRepo, err := opts.Finder.Find(findOptions)
131 if err != nil {
132 return err
133 }
134
135 if opts.BrowserMode {
136 openUrl := fmt.Sprintf("%s/files", pr.URL)
137 if opts.IO.IsStdoutTTY() {
138 fmt.Fprintf(opts.IO.ErrOut, "Opening %s in your browser.\n", text.DisplayURL(openUrl))
139 }
140 return opts.Browser.Browse(openUrl)
141 }
142
143 httpClient, err := opts.HttpClient()
144 if err != nil {
145 return err
146 }
147
148 if opts.NameOnly {
149 opts.Patch = false
150 }
151
152 diffReadCloser, err := fetchDiff(httpClient, baseRepo, pr.Number, opts.Patch)
153 if err != nil {
154 return fmt.Errorf("could not find pull request diff: %w", err)
155 }
156 defer diffReadCloser.Close()
157
158 var diff io.Reader = diffReadCloser
159 if len(opts.Exclude) > 0 {
160 filtered, err := filterDiff(diff, opts.Exclude)
161 if err != nil {
162 return err
163 }
164 diff = filtered
165 }
166 if opts.IO.IsStdoutTTY() {
167 diff = sanitizedReader(diff)
168 }
169
170 if err := opts.IO.StartPager(); err == nil {
171 defer opts.IO.StopPager()
172 } else {
173 fmt.Fprintf(opts.IO.ErrOut, "failed to start pager: %v\n", err)
174 }
175
176 if opts.NameOnly {
177 return changedFilesNames(opts.IO.Out, diff)

Callers 2

NewCmdDiffFunction · 0.85
Test_diffRunFunction · 0.85

Calls 14

DisplayURLFunction · 0.92
fetchDiffFunction · 0.85
filterDiffFunction · 0.85
sanitizedReaderFunction · 0.85
changedFilesNamesFunction · 0.85
colorDiffLinesFunction · 0.85
IsStdoutTTYMethod · 0.80
StartPagerMethod · 0.80
StopPagerMethod · 0.80
FindMethod · 0.65
BrowseMethod · 0.65
ErrorfMethod · 0.65

Tested by 1

Test_diffRunFunction · 0.68