Devel-PerlySense

 view release on metacpan or  search on metacpan

bin/perly_sense  view on Meta::CPAN

#!/usr/bin/env perl
$|++;
use lib q|/Users/johanl/Documents/Projects/Dev/CPAN2/Devel-PerlySense/source/lib|;
use lib "/Users/johanl/Documents/Projects/Dev/CPAN2/Devel-CoverX-Covered/trunk/source/lib";
use lib "/home/j.lindstrom/dev/personal/p5-Devel-PerlySense/source/lib";

use strict;

# Must do this early to silence noisy CPAN modules which keep breaking
# the output
use Devel::PerlySense::Util::Log;
BEGIN { $SIG{__WARN__} = sub { debug(@_); }; }

use Getopt::Long;
use Pod::Usage;
use File::Basename;
use File::Path;
use File::Find;
use Path::Class;
use Cache::FileCache;
use List::Util qw/ max /;
use List::MoreUtils qw/ any /;

use lib "../lib", "lib";
use Devel::PerlySense;
use Devel::PerlySense::Home;
use Devel::PerlySense::Editor;
use Devel::PerlySense::Editor::Emacs;
use Devel::PerlySense::Editor::Vim;
use Time::HiRes qw/time/;
use YAML::Tiny;
use Cwd;

use Data::Dumper;
use Devel::TimeThis;


main();

sub main {

    my $oPs = createPerlySense();

    if (($ARGV[0] || "") eq "--stdin") {

        chomp(my $dir = <STDIN>);
        chomp(my $command = <STDIN>);
        $dir && $command or warn(q|Please enter ABS_DIR\nARGV\n| . "\n"), exit(0);

        chdir($dir) or warn("Could not chdir to ($dir)\n"), exit(0);

        local @ARGV = split(/\s+/, $command);
        s/^(["'])(.*)\1$/$2/ for @ARGV; #Remove quotes

        eval { main_perly_sense($oPs) };
        $@ and print $@;
    } else {
#     my $total = Devel::TimeThis->new("Total loop");
#      for (1..5) {
#          my $iteration = Devel::TimeThis->new("Iteration");
#          local @ARGV = @ARGV;
#          sleep(5);
        main_perly_sense($oPs);
#      }
    }
}





#Oh yes, this file is in serious need of a makeover...
sub main_perly_sense {
    my ($oPs) = @_;

    my ($dirOrigin, $fileOrigin, $module, $dir, $file, $row, $col, $sub, $nameClass, $nameMethod, $clearCache, $widthDisplay, $typeIo, $useAlternateCommand);
    my @aShow;
    debug("CWD: (" . getcwd() . "), ARGV: (" . join(" ", map { "|$_|" } ("perly_sense",  @ARGV)) . ")");

    GetOptions(
        "module:s"              => \$module,
        "file:s"                => \$file,
        "dir:s"                 => \$dir,
        "row:i"                 => \$row,
        "col:i"                 => \$col,
        "sub:s"                 => \$sub,
        "file_origin:s"         => \$fileOrigin,
        "dir_origin:s"          => \$dirOrigin,
        "class_name:s"          => \$nameClass,
        "method_name:s"         => \$nameMethod,
        "show:s"                => \@aShow,
        "clear_cache"           => \$clearCache,
        "use_alternate_command" => \$useAlternateCommand,
        "width_display:s"       => \$widthDisplay,
        "io_type:s"             => \$typeIo,
    );
    my ($command) = @ARGV;
    $command or syntax("Missing command");

    $typeIo ||= "editor_emacs";
    my $rhIoClass = {
        editor_emacs => "Devel::PerlySense::Editor::Emacs",
        editor_vim   => "Devel::PerlySense::Editor::Vim",
    };
    my $classIo = $rhIoClass->{$typeIo}
            or syntax("Invalid --io_type ($typeIo)");
    my $oEditor = $classIo->new(
        oPerlySense => $oPs,
        widthDisplay => $widthDisplay,
    );

    if ($clearCache && (my $dirHomeCache = $oPs->oHome->dirHomeCache)) {
        warn("Clearing cache directory ($dirHomeCache)\n");
        rmtree([$dirHomeCache]); -d $dirHomeCache and die("Could not clear cache ($dirHomeCache)\n");
        mkpath([$dirHomeCache]); -d $dirHomeCache or die("Could not re-create cache dir ($dirHomeCache)\n");
    }







( run in 1.224 second using v1.01-cache-2.11-cpan-800906f7e73 )