package Admin::App::ToolsDir;

use constant 'APPDIR' => '/app/tools/';

use strict;
use warnings;

use File::Find::Rule;

sub new {
    my $class = shift;
    my $self  = {};
    bless $self, $class;
    $self;
}

sub all_perl_files {
    my $self = shift;
    my $dir = shift || APPDIR;
    my $allfiles;
    push @{$allfiles}, @{ $self->perl_modules($dir) };
    push @{$allfiles}, @{ $self->perl_scripts($dir) };
    push @{$allfiles}, @{ $self->perl_misc($dir) };
    $allfiles;
}

sub perl_modules {
    my $self = shift;
    my $dir = shift || APPDIR;
    my $modules;
    push @{$modules}, File::Find::Rule->file->name(qr/\.pm$/)->in($dir);
    $modules;
}

sub perl_scripts {
    my $self = shift;
    my $dir  = shift || APPDIR;
    my $scripts;
    push @{$scripts}, File::Find::Rule->file->name(qr/\.pl$/)->in($dir);
    $scripts;
}

sub perl_misc {
    my $self = shift;
    my $dir  = shift || APPDIR;
    my $misc;
    ## all files that have magic path tool
    my $rule = File::Find::Rule->new;
    $rule->not_name(qr/\.(pm|pl|xml|xsl|sql|gz|sh|xls|txt|h|pdf|js|gif|png|css|jpg|php|xsd|tt)$/);
    $rule->grep( qr/^#!.*\bperl/, [ sub { 1 } ] );
    push @{$misc}, $rule->file->in($dir);
    $misc;
}

1;
