#! perl # ABSTRACT: A tool for managing CODEOWNERS files # PODNAME: git-codeowners =head1 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)" =head1 DESCRIPTION F is yet another CLI tool for managing F files in git repos. In particular, it can be used to quickly find out who owns a particular file in a monorepo (or monolith). B The interface of this tool and its modules will probably change as I field test some things. Feedback welcome. =head1 OPTIONS =head2 --version Print the program name and version to C, and exit. Alias: C<-v> =head2 --help Print the synopsis to C, and exit. Alias: C<-h> You can also use C<--manual> to print the full documentation. =head2 --color Enable colorized output. Color is ON by default on terminals; use C<--no-color> to disable. Some environment variables may also alter the behavior of colorizing output: =for :list * C - Set to disable color (same as C<--no-color>). * C - Set the number of supportable colors (e.g. 0, 16, 256, 16777216). =head2 --format Specify the output format to use. See L. Alias: C<-f> =head2 --shell-completion eval "$(lintany --shell-completion)" Print shell code to enable completion to C, and exit. Does not yet support Zsh... =head1 COMMANDS =head2 show git-codeowners [show] [--format FORMAT] [--[no-]project] [PATH...] Show owners of one or more files in a repo. =head2 owners git-codeowners owners [--format FORMAT] [--pattern PATTERN] =head2 patterns git-codeowners patterns [--format FORMAT] [--owner OWNER] =head2 create git-codeowners create [REPO_DIRPATH|CODEOWNERS_FILEPATH] Create a new F file for a specified repo (or current directory). =head2 update git-codeowners update [REPO_DIRPATH|CODEOWNERS_FILEPATH] Update the "unowned" list of an existing F file for a specified repo (or current directory). =head1 FORMAT The C<--format> argument can be one of: =for :list * C - Comma-separated values (requires L) * C - Pretty JSON (requires L) * C - JSON (requires L) * C - Table (requires L) * C - Tab-separated values (requires L) * C - YAML (requires L) * C - Custom format (see below) You can specify a custom format using printf-like format sequences. These are the items that can substituted: =for :list * C<%F> - Filename * C<%O> - Owner or owners * C<%P> - Project * C<%T> - Pattern * C<%n> - newline * C<%t> - tab * C<%%> - 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: =for :list * C - Quote the replacement string. * C - Colorize the replacement string (if color is ON). * C - Do not colorize replacement string. =cut # FATPACK - Do not remove this line. use warnings; use strict; use App::Codeowners; our $VERSION = '9999.999'; # VERSION App::Codeowners->main(@ARGV);