MCPcopy
hub / github.com/cli/cli / parseSection

Function parseSection

pkg/cmd/browse/browse.go:230–295  ·  view source on GitHub ↗
(baseRepo ghrepo.Interface, opts *BrowseOptions)

Source from the content-addressed store, hash-verified

228}
229
230func parseSection(baseRepo ghrepo.Interface, opts *BrowseOptions) (string, error) {
231 if opts.ProjectsFlag {
232 return "projects", nil
233 } else if opts.ReleasesFlag {
234 return "releases", nil
235 } else if opts.SettingsFlag {
236 return "settings", nil
237 } else if opts.WikiFlag {
238 return "wiki", nil
239 } else if opts.ActionsFlag {
240 return "actions", nil
241 }
242
243 ref := opts.Branch
244 if opts.Commit != "" {
245 ref = opts.Commit
246 }
247
248 if ref == "" {
249 if opts.SelectorArg == "" {
250 return "", nil
251 }
252 if isNumber(opts.SelectorArg) {
253 return fmt.Sprintf("issues/%s", strings.TrimPrefix(opts.SelectorArg, "#")), nil
254 }
255 if isCommit(opts.SelectorArg) {
256 return fmt.Sprintf("commit/%s", opts.SelectorArg), nil
257 }
258 }
259
260 if ref == "" {
261 httpClient, err := opts.HttpClient()
262 if err != nil {
263 return "", err
264 }
265 apiClient := api.NewClientFromHTTP(httpClient)
266 ref, err = api.RepoDefaultBranch(apiClient, baseRepo)
267 if err != nil {
268 return "", fmt.Errorf("error determining the default branch: %w", err)
269 }
270 }
271
272 filePath, rangeStart, rangeEnd, err := parseFile(*opts, opts.SelectorArg)
273 if err != nil {
274 return "", err
275 }
276
277 if rangeStart > 0 {
278 var rangeFragment string
279 if rangeEnd > 0 && rangeStart != rangeEnd {
280 rangeFragment = fmt.Sprintf("L%d-L%d", rangeStart, rangeEnd)
281 } else {
282 rangeFragment = fmt.Sprintf("L%d", rangeStart)
283 }
284 if opts.BlameFlag {
285 return fmt.Sprintf("blame/%s/%s#%s", escapePath(ref), escapePath(filePath), rangeFragment), nil
286 }
287 return fmt.Sprintf("blob/%s/%s?plain=1#%s", escapePath(ref), escapePath(filePath), rangeFragment), nil

Callers 1

runBrowseFunction · 0.85

Calls 7

NewClientFromHTTPFunction · 0.92
RepoDefaultBranchFunction · 0.92
isNumberFunction · 0.85
isCommitFunction · 0.85
parseFileFunction · 0.85
escapePathFunction · 0.85
ErrorfMethod · 0.65

Tested by

no test coverage detected