NAME
git-codeowners - A tool for managing CODEOWNERS files
VERSION
version 0.40
SYNOPSIS
git-codeowners [--version|--help|--manual]
git-codeowners [show] [--format FORMAT] [--[no-]project] [PATH...]
git-codeowners owners [--format FORMAT] [--pattern PATTERN]
git-codeowners patterns [--format FORMAT] [--owner OWNER]
git-codeowners create|update [REPO_DIRPATH|CODEOWNERS_FILEPATH]
# enable bash shell completion
eval "$(git-codeowners --shell-completion)"
DESCRIPTION
git-codeowners is yet another CLI tool for managing CODEOWNERS files in git repos. In particular, it can be used to quickly find out who owns a particular file in a monorepo (or monolith).
THIS IS EXPERIMENTAL! The interface of this tool and its modules will probably change as I field test some things. Feedback welcome.
INSTALL
There are several ways to install git-codeowners to your system.
from CPAN
You can install git-codeowners using cpanm:
cpanm App::Codeowners
from GitHub
You can also choose to download git-codeowners as a self-contained executable:
curl -OL https://raw.githubusercontent.com/chazmcgarvey/git-codeowners/solo/git-codeowners
chmod +x git-codeowners
To hack on the code, clone the repo instead:
git clone https://github.com/chazmcgarvey/git-codeowners.git
cd git-codeowners
make bootstrap # installs dependencies; requires cpanm
OPTIONS
--version
Print the program name and version to STDOUT, and exit.
Alias: -v
--help
Print the synopsis to STDOUT, and exit.
Alias: -h
You can also use --manual to print the full documentation.
--color
Enable colorized output.
Color is ON by default on terminals; use --no-color to disable. Some environment variables may also alter the behavior of colorizing output:
NO_COLOR- Set to disable color (same as--no-color).COLOR_DEPTH- Set the number of supportable colors (e.g. 0, 16, 256, 16777216).
--format
Specify the output format to use. See "FORMAT".
Alias: -f
--shell-completion
eval "$(lintany --shell-completion)"
Print shell code to enable completion to STDOUT, and exit.
Does not yet support Zsh...
COMMANDS
show
git-codeowners [show] [--format FORMAT] [--[no-]project] [PATH...]
Show owners of one or more files in a repo.
owners
git-codeowners owners [--format FORMAT] [--pattern PATTERN]
patterns
git-codeowners patterns [--format FORMAT] [--owner OWNER]
create
git-codeowners create [REPO_DIRPATH|CODEOWNERS_FILEPATH]
Create a new CODEOWNERS file for a specified repo (or current directory).
update
git-codeowners update [REPO_DIRPATH|CODEOWNERS_FILEPATH]
Update the "unowned" list of an existing CODEOWNERS file for a specified repo (or current directory).
FORMAT
The --format argument can be one of:
csv- Comma-separated values (requires Text::CSV)json:pretty- Pretty JSON (requires JSON::MaybeXS)json- JSON (requires JSON::MaybeXS)table- Table (requires Text::Table::Any)tsv- Tab-separated values (requires Text::CSV)yaml- YAML (requires YAML)FORMAT- Custom format (see below)
Custom
You can specify a custom format using printf-like format sequences. These are the items that can be substituted:
%F- Filename%O- Owner or owners%P- Project%T- Pattern%n- newline%t- tab%%- percent sign
The syntax also allows padding and some filters. Examples:
git-codeowners show -f ' * %-50F %O' # default for "show"
git-codeowners show -f '%{quote}F,%{quote}O' # ad hoc CSV
git-codeowners patterns -f '--> %{color:0c0}T' # whatever...
Available filters:
quote- Quote the replacement string.color:FFFFFF- Colorize the replacement string (if color is ON).nocolor- Do not colorize replacement string.
Table
Table formatting can be done by one of several different modules, each with its own features and bugs. The default module is Text::Table::Tiny, but this can be overridden using the PERL_TEXT_TABLE environment variable if desired, like this:
PERL_TEXT_TABLE=Text::Table::HTML git-codeowners -f table
The list of available modules is at "@BACKENDS" in Text::Table::Any.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/chazmcgarvey/git-codeowners/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Charles McGarvey <chazmcgarvey@brokenzipper.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019 by Charles McGarvey.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.