Categorygithub.com/hmarr/codeowners
modulepackage
1.2.1
Repository: https://github.com/hmarr/codeowners.git
Documentation: pkg.go.dev

# README

codeowners

build PkgGoDev

A CLI and Go library for GitHub's CODEOWNERS file.

Command line tool

The codeowners CLI identifies the owners for files in a local repository or directory.

Installation

If you're on macOS, you can install the CLI from the homebrew tap.

$ brew tap hmarr/tap
$ brew install codeowners

Otherwise, grab a binary from the releases page or install from source with go install:

$ go install github.com/hmarr/codeowners/cmd/codeowners@latest

Usage

By default, the command line tool will walk the directory tree, printing the code owners of any files that are found.

$ codeowners --help
usage: codeowners <path>...
  -f, --file string     CODEOWNERS file path
  -h, --help            show this help message
  -o, --owner strings   filter results by owner
  -u, --unowned         only show unowned files (can be combined with -o)

$ ls
CODEOWNERS       DOCUMENTATION.md README.md        example.go       example_test.go

$ cat CODEOWNERS
*.go       @example/go-engineers
*.md       @example/docs-writers
README.md  [email protected]

$ codeowners
CODEOWNERS                           (unowned)
README.md                            [email protected]
example_test.go                      @example/go-engineers
example.go                           @example/go-engineers
DOCUMENTATION.md                     @example/docs-writers

To limit the files the tool looks at, provide one or more paths as arguments.

$ codeowners *.md
README.md                            [email protected]
DOCUMENTATION.md                     @example/docs-writers

Pass the --owner flag to filter results by a specific owner.

$ codeowners -o @example/go-engineers
example_test.go                      @example/go-engineers
example.go                           @example/go-engineers

Pass the --unowned flag to only show unowned files.

$ codeowners -u
CODEOWNERS                           (unowned)

Go library

A package for parsing CODEOWNERS files and matching files to owners.

Installation

$ go get github.com/hmarr/codeowners

Usage

Full documentation is available at pkg.go.dev.

Here's a quick example to get you started:

package main

import (
	"fmt"
	"log"
	"os"

	"github.com/hmarr/codeowners"
)

func main() {
	file, err := os.Open("CODEOWNERS")
	if err != nil {
		log.Fatal(err)
	}

	ruleset, err := codeowners.ParseFile(file)
	if err != nil {
		log.Fatal(err)
	}

	rule, err := ruleset.Match("path/to/file")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("Owners: %v\n", rule.Owners)
}

# Packages

No description provided by the author

# Functions

LoadFile loads and parses a CODEOWNERS file at the path specified.
LoadFileFromStandardLocation loads and parses a CODEOWNERS file at one of the standard locations for CODEOWNERS files (./, .github/, docs/).
MatchEmailOwner matches an email address owner.
MatchTeamOwner matches a GitHub team owner.
MatchUsernameOwner matches a GitHub username owner.
ParseFile parses a CODEOWNERS file, returning a set of rules.
No description provided by the author

# Constants

EmailOwner is the owner type for email addresses.
TeamOwner is the owner type for GitHub teams.
UsernameOwner is the owner type for GitHub usernames.

# Variables

DefaultOwnerMatchers is the default set of owner matchers, which includes the GitHub-flavored email, team, and username matchers.
No description provided by the author

# Structs

No description provided by the author
Owner represents an owner found in a rule.
Rule is a CODEOWNERS rule that maps a gitignore-style path pattern to a set of owners.

# Interfaces

No description provided by the author

# Type aliases

OwnerMatchFunc is a function that matches a string against a pattern and returns an Owner, or ErrNoMatch if no match was found.
Ruleset is a collection of CODEOWNERS rules.