App-Kritika

 view release on metacpan or  search on metacpan

kritika.fatpack  view on Meta::CPAN

#!/usr/bin/env perl

# This chunk of stuff was generated by App::FatPacker. To find the original
# file's code, look for the end of this BEGIN block or the string 'FATPACK'
BEGIN {
my %fatpacked;

$fatpacked{"App/Kritika.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_KRITIKA';
  package App::Kritika;use strict;use warnings;our$VERSION='0.05';use JSON ();use Cwd qw(abs_path);use HTTP::Tiny;sub new {my$class=shift;my (%params)=@_;my$self={};bless$self,$class;$self->{base_url}=$params{base_url}|| 'https://kritika.io';$self->{...
APP_KRITIKA

$fatpacked{"App/Kritika/Settings.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'APP_KRITIKA_SETTINGS';
  package App::Kritika::Settings;use strict;use warnings;use Cwd qw(getcwd);use File::Basename qw(dirname);use File::Spec;use File::HomeDir ();sub new {my$class=shift;my (%params)=@_;my$self={};bless$self,$class;$self->{file}=$params{file};return$sel...
APP_KRITIKA_SETTINGS

$fatpacked{"ExtUtils/Config.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_CONFIG';
  package ExtUtils::Config;$ExtUtils::Config::VERSION='0.05';use strict;use warnings;use Config;use Data::Dumper ();sub new {my ($pack,$args)=@_;return bless {values=>($args ? {%$args }: {}),},$pack}sub get {my ($self,$key)=@_;return exists$self->{va...
EXTUTILS_CONFIG

$fatpacked{"ExtUtils/Helpers.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_HELPERS';
  package ExtUtils::Helpers;$ExtUtils::Helpers::VERSION='0.05';use strict;use warnings FATAL=>'all';use Exporter 5.57 'import';use Config;use File::Basename qw/basename/;use File::Spec::Functions qw/splitpath canonpath abs2rel splitdir/;use Text::Par...
EXTUTILS_HELPERS

$fatpacked{"ExtUtils/Helpers/Unix.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_HELPERS_UNIX';
  package ExtUtils::Helpers::Unix;$ExtUtils::Helpers::Unix::VERSION='0.05';use strict;use warnings FATAL=>'all';use Exporter 5.57 'import';our@EXPORT=qw/make_executable detildefy/;use Carp qw/croak/;use Config;my$layer=$] >= 5.008001 ? ":raw" : "";su...
EXTUTILS_HELPERS_UNIX

$fatpacked{"ExtUtils/Helpers/VMS.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_HELPERS_VMS';
  package ExtUtils::Helpers::VMS;$ExtUtils::Helpers::VMS::VERSION='0.05';use strict;use warnings FATAL=>'all';use Exporter 5.57 'import';our@EXPORT=qw/make_executable detildefy/;use File::Copy qw/copy/;sub make_executable {my$filename=shift;my$batchn...
EXTUTILS_HELPERS_VMS

$fatpacked{"ExtUtils/Helpers/Windows.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_HELPERS_WINDOWS';
  package ExtUtils::Helpers::Windows;$ExtUtils::Helpers::Windows::VERSION='0.05';use strict;use warnings FATAL=>'all';use Exporter 5.57 'import';our@EXPORT=qw/make_executable detildefy/;use Config;use Carp qw/carp croak/;use ExtUtils::PL2Bat 'pl2bat'...
EXTUTILS_HELPERS_WINDOWS

$fatpacked{"ExtUtils/InstallPaths.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'EXTUTILS_INSTALLPATHS';
  package ExtUtils::InstallPaths;$ExtUtils::InstallPaths::VERSION='0.05';use 5.006;use strict;use warnings;use File::Spec ();use Carp ();use ExtUtils::Config 0.002;my%complex_accessors=map {$_=>1}qw/prefix_relpaths install_sets/;my%hash_accessors=map...
EXTUTILS_INSTALLPATHS

$fatpacked{"File/HomeDir.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR';
  package File::HomeDir;use 5.00503;use strict;use Carp ();use Config ();use File::Spec ();use File::Which ();use vars qw{$VERSION @ISA @EXPORT @EXPORT_OK $IMPLEMENTED_BY};BEGIN {$VERSION='0.05';require Exporter;@ISA=qw{Exporter};@EXPORT=qw{home};@EX...
FILE_HOMEDIR

$fatpacked{"File/HomeDir/Darwin.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_DARWIN';
  package File::HomeDir::Darwin;use 5.00503;use strict;use Cwd ();use Carp ();use File::HomeDir::Unix ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Unix'}sub my_home {my$class=shift;if (exists$ENV{HOME}and defined$ENV{HOME...
FILE_HOMEDIR_DARWIN

$fatpacked{"File/HomeDir/Darwin/Carbon.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_DARWIN_CARBON';
  package File::HomeDir::Darwin::Carbon;use 5.00503;use strict;use Cwd ();use Carp ();use File::HomeDir::Darwin ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Darwin';local $@;eval "use prefork 'Mac::Files'"}sub my_home {my...
FILE_HOMEDIR_DARWIN_CARBON

$fatpacked{"File/HomeDir/Darwin/Cocoa.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_DARWIN_COCOA';
  package File::HomeDir::Darwin::Cocoa;use 5.00503;use strict;use Cwd ();use Carp ();use File::HomeDir::Darwin ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Darwin';local $@;eval "use prefork 'Mac::SystemDirectory'"}sub my...
FILE_HOMEDIR_DARWIN_COCOA

$fatpacked{"File/HomeDir/Driver.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_DRIVER';
  package File::HomeDir::Driver;use 5.00503;use strict;use Carp ();use vars qw{$VERSION};BEGIN {$VERSION='0.05'}sub my_home {Carp::croak("$_[0] does not implement compulsory method $_[1]")}1;
FILE_HOMEDIR_DRIVER

$fatpacked{"File/HomeDir/FreeDesktop.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_FREEDESKTOP';
  package File::HomeDir::FreeDesktop;use 5.00503;use strict;use Carp ();use File::Spec ();use File::Which ();use File::HomeDir::Unix ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Unix'}my$xdgprog=File::Which::which('xdg-us...
FILE_HOMEDIR_FREEDESKTOP

$fatpacked{"File/HomeDir/MacOS9.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_MACOS9';
  package File::HomeDir::MacOS9;use 5.00503;use strict;use Carp ();use File::HomeDir::Driver ();use vars qw{$VERSION @ISA};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Driver'}SCOPE: {local $@;eval "use prefork 'Mac::Files'"}sub my_home {my$class=shif...
FILE_HOMEDIR_MACOS9

$fatpacked{"File/HomeDir/Test.pm"} = '#line '.(1+__LINE__).' "'.__FILE__."\"\n".<<'FILE_HOMEDIR_TEST';
  package File::HomeDir::Test;use 5.00503;use strict;use Carp ();use File::Spec ();use File::Temp ();use File::HomeDir::Driver ();use vars qw{$VERSION @ISA %DIR $ENABLED};BEGIN {$VERSION='0.05';@ISA='File::HomeDir::Driver';%DIR=();$ENABLED=0}sub impo...

kritika.fatpack  view on Meta::CPAN

else {
  *{"${class}::INC"} = sub {
    if (my $fat = $_[0]{$_[1]}) {
      open my $fh, '<', \$fat
        or die "FatPacker error loading $_[1] (could be a perl installation issue?)";
      return $fh;
    }
    return;
  };
}

unshift @INC, bless \%fatpacked, $class;
  } # END OF FATPACK CODE


use strict;
use warnings;

use Getopt::Long;
use App::Kritika;
use App::Kritika::Settings;

my $opt_diff_branch;
my $opt_diff_ref;
my $opt_diff_snapshot;
GetOptions(
    'diff-branch=s'   => \$opt_diff_branch,
    'diff-ref=s'      => \$opt_diff_ref,
    'diff-snapshot=i' => \$opt_diff_snapshot,
) or die("Error in command line arguments\n");

my @files;

if ( !-t STDIN ) {
    @files = map { chomp $_; $_ } <>;
}
else {
    @files = @ARGV;
}

@files = grep { -f $_ } @files;

die <<"EOF" unless @files;
Usage: [--diff-ref=<reference>]
       [--diff-snapshot=<snapshot-seq>]
       [--diff-branch=<branch>]
       <file>...
EOF

my $settings = App::Kritika::Settings->new( file => $files[0] )->settings;

my $kritika = App::Kritika->new(
    %$settings,
    diff_branch   => $opt_diff_branch,
    diff_ref      => $opt_diff_ref,
    diff_snapshot => $opt_diff_snapshot
);

my $issues_found = 0;

my $report = $kritika->validate(@files);

if ( $report->{success} ) {
    print "No violations found\n";

    exit 0;
}
else {
    foreach my $file ( @{ $report->{files} } ) {
        if ( $file->{success} ) {
            print "$file->{path}:OK\n";
            next;
        }

        foreach my $violation ( sort { $a->{line_no} <=> $b->{line_no} }
            @{ $file->{violations} } )
        {
            $violation->{col_no} //= 1;
            print "$file->{path}:$violation->{line_no}:$violation->{col_no}: "
              . "[$violation->{profile}/$violation->{rule}] $violation->{message}\n";
        }
    }

    exit $report->{violations_found};
}

__END__

=head1 NAME

kritika - integrate with kritika.io

=head1 SYNOPSIS

    # Full file analysis
    kritika lib/MyFile.pm

    # Report only *new* violations
    kritika --diff master lib/OtherFile.pm
    kritika --diff #31 lib/OtherFile.pm
    kritika --diff 451e77f3 lib/OtherFile.pm

=head1 DESCRIPTION

This command allows you to quickly analyze file using L<https://kritika.io> service. Normally C<kritika.io> analyzes
your repository after the push, but of course sometimes you would like to know if something's wrong before doing
a commit.

=head2 Git Hook Example

This is based on the shipped with C<git> pre-push hook example.

    #!/bin/sh

    remote="$1"
    url="$2"

    z40=0000000000000000000000000000000000000000

    while read local_ref local_sha remote_ref remote_sha
    do



( run in 1.440 second using v1.01-cache-2.11-cpan-d8267643d1d )