Deterministic CODEOWNERS parser, matcher, and coverage auditor for MoonBit.
git clone https://github.com/404-32/byc.git
cd byc
moon test --target wasmmoon run cmd/main -- explain .github/CODEOWNERS src/parser.mbtmoon run cmd/main -- check .github/CODEOWNERS examples/changed-files.txtmoon run cmd/main -- coverage .github/CODEOWNERS examples/changed-files.txt --jsonmoon run examples/basic///|
let document = @codeowners.Codeowners::parse(
(
#|* @global-owner
#|/src/ @src-team
#|*.md docs@example.com
),
)
///|
let rule = document.find_rule("src/http/client.mbt")
///|
let owners = document.owners_for("src/http/client.mbt")
///|
let report = document.audit(["src/http/client.mbt", "build/tool.exe"])moon-codeowners check <CODEOWNERS> [paths-file] [--json]
moon-codeowners owners <CODEOWNERS> <repo-path>
moon-codeowners explain <CODEOWNERS> <repo-path>
moon-codeowners coverage <CODEOWNERS> <paths-file> [--json]moon check --target wasm --deny-warn
moon test --target wasm --deny-warn
moon fmt --check
moon run cmd/main -- check .github/CODEOWNERS examples/changed-files.txtpub(all) struct AuditReport {
entries : Array[AuditEntry]
uncovered : Array[String]
issues : Array[ParseIssue]
covered_count : Int
total_count : Int
}pub(all) enum OwnerKind {
User
Team
Email
}pub(all) struct ParseIssue {
line : Int
source : String
message : String
}fn normalize_path(path : String) -> StringInstall
Download zipDeterministic CODEOWNERS parser, matcher, and coverage auditor for MoonBit.