Skip to content

Latest commit

 

History

History
43 lines (28 loc) · 1.78 KB

File metadata and controls

43 lines (28 loc) · 1.78 KB

repoutil Package

The repoutil package provides utility functions for working with GitHub repository slugs.

Overview

This package offers focused helpers for parsing and normalizing repository identifiers, which are used throughout the codebase wherever GitHub repositories are referenced.

Public API

Functions

Function Signature Description
SplitRepoSlug func(slug string) (owner, repo string, err error) Splits a repository slug of the form owner/repo into its two components; returns an error when the slug does not contain exactly one / or when either component is empty
NormalizeRepoForAPI func(repo string) (ownerRepo string, host string) Splits a repository string of the form [HOST/]owner/repo into the owner/repo portion and an optional host name for GHES/Proxima API calls

Usage Examples

import "github.com/github/gh-aw/pkg/repoutil"

owner, repo, err := repoutil.SplitRepoSlug("github/gh-aw")
if err != nil {
    return fmt.Errorf("invalid repository: %w", err)
}
// owner = "github", repo = "gh-aw"

Dependencies

Internal:

  • github.com/github/gh-aw/pkg/logger — debug logging

Design Notes

  • All debug output uses logger.New("repoutil:repoutil") and is only emitted when DEBUG=repoutil:*.
  • For paths that include sub-folders (e.g. GitHub Actions uses: fields such as github/codeql-action/upload-sarif), use gitutil.ExtractBaseRepo first to strip the sub-path before calling SplitRepoSlug.
  • NormalizeRepoForAPI only treats three-segment strings as HOST/owner/repo; plain owner/repo values are returned unchanged with an empty host.

This specification is automatically maintained by the spec-extractor workflow.