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 )