1.0.0 • Published 8 months ago
@bbckr/codeowners v1.0.0
@bbckr/codeowners
A TypeScript library for parsing and composing CODEOWNERS files.
Features
- Supports both GitHub and GitLab CODEOWNERS syntax
- Preserves comments and whitespace
- Provides a way to get owners for a given file
- Parses CODEOWNERS files into an AST (Abstract Syntax Tree), allowing you to compose a CODEOWNERS file with entries, comments, and even sections (GitLab spec only)
Installation
npm install @bbckr/codeownersyarn add @bbckr/codeownersUsage
Parse a CODEOWNERS file
import { CodeOwnersParser } from "@bbckr/codeowners";
const input = `
# comment # same comment
/some/path owner1 @owner2
/path/2 # comment
`;
const parser = new CodeOwnersParser();
const codeowners = parser.parse(input);Get the owners of a file
const owners = codeowners.getOwners("path/to/file");Output
['@owner1', '@owner2']Compose a CODEOWNERS file programatically
import { CodeOwners, PathNode, CommentNode } from "@bbckr/codeowners";
const codeowners = new CodeOwners([
new PathNode("/path/to/file", ["owner1", "@owner2"]),
new CommentNode("# comment"),
]);Output
/path/to/file owner1 @owner2
# commentCompose a GitLab CODEOWNERS file programatically
import {
CodeOwners,
CodeOwnersSpec,
PathNode,
SectionNode,
} from "@bbckr/codeowners";
const codeowners = new CodeOwners(
[
new PathNode("/path/to/file", ["owner1", "@owner2"]),
new SectionNode(
"README Owners", // section name
false, // optional section
[], // owners
undefined, // count
undefined, // comment
undefined, // parent, undefined for root of file
[
new PathNode("README.md", ["@user1", "@user2"]),
new PathNode("internal/README.md", ["@user4"]),
],
),
],
CodeOwnersSpec.Gitlab,
);Output
/path/to/file owner1 @owner2
[README Owners]
README.md @user1 @user2
internal/README.md @user41.0.0
8 months ago