App-Codeowners/lib/App/Codeowners/Formatter/JSON.pm
package App::Codeowners::Formatter::JSON;
# ABSTRACT: Format codeowners output as JSON
use warnings;
use strict;
our $VERSION = '0.51'; # VERSION
use parent 'App::Codeowners::Formatter';
use App::Codeowners::Util qw(zip);
sub finish {
my $self = shift;
my $results = shift;
eval { require JSON::MaybeXS } or die "Missing dependency: JSON::MaybeXS\n";
my %options;
$options{pretty} = 1 if lc($self->format) eq 'pretty';
my $json = JSON::MaybeXS->new(canonical => 1, %options);
my $columns = $self->columns;
$results = [map { +{zip @$columns, @$_} } @$results];
print { $self->handle } $json->encode($results);
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
App::Codeowners::Formatter::JSON - Format codeowners output as JSON
=head1 VERSION
version 0.51
=head1 DESCRIPTION
This is a L<App::Codeowners::Formatter> that formats output using L<JSON::MaybeXS>.
=head1 ATTRIBUTES
=head2 format
If unset (default), the output will be compact. If "pretty", the output will look nicer to humans.
=head1 BUGS
Please report any bugs or feature requests on the bugtracker website
L<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.
=head1 AUTHOR
Charles McGarvey <chazmcgarvey@brokenzipper.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2021 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.
=cut