(baseRepo ghrepo.Interface, opts *BrowseOptions)
| 228 | } |
| 229 | |
| 230 | func 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 |
no test coverage detected