App-MechaCPAN
view release on metacpan or search on metacpan
lib/App/MechaCPAN.pm view on Meta::CPAN
{
# Scroll Up 1 line
print STDERR "\n";
$idx = -1;
}
if ( !defined $idx )
{
unshift @key_lines, $key;
$idx = 0;
# Scroll Up 1 line
print STDERR "\n";
}
$idx++;
# Don't bother with fancy line movements if we are verbose
if ($VERBOSE)
{
print STDERR "$color$line$RESET\n";
return;
}
# We use some ANSI escape codes, so they are:
# \e[.F - Move up from current line, which is always the end of the list
# \e[K - Clear the line
# $color - Colorize the text
# $line - Print the text
# $RESET - Reset the colorize
# \e[.E - Move down from the current line, back to the end of the list
print STDERR "\e[${idx}F";
print STDERR "\e[K";
print STDERR "$color$line$RESET\n";
print STDERR "\e[" . ( $idx - 1 ) . "E"
if $idx > 1;
return;
}
sub status
{
my $key = shift;
my $color = shift;
my $line = shift;
if ( !defined $line )
{
$line = $color;
$color = 'RESET';
}
logmsg($line);
return
if $QUIET;
$color = eval { Term::ANSIColor::color($color) } // $RESET;
state @last_key;
# Undo the last line that is bold
if ( @last_key && !$VERBOSE && $last_key[0] ne $key )
{
_show_line(@last_key);
}
_show_line( $key, $color . $BOLD, $line );
@last_key = ( $key, $color, $line );
}
END { print STDERR "\n" unless $QUIET; }
INIT { print STDERR "\n" unless $QUIET; }
sub _get_project_dir
{
my $result = $PROJ_DIR;
return $result;
}
sub get_project_dir
{
my $result = _get_project_dir;
if ( !defined $result )
{
$result = cwd;
$result =~ s{ / local /? $}{}xms;
}
return $result;
}
package MechaCPAN::DestGuard
{
use Cwd qw/cwd/;
use Scalar::Util qw/refaddr weaken/;
use overload '""' => sub { my $s = shift; return $$s }, fallback => 1;
my $dest_dir;
sub get
{
my $result = $dest_dir;
if ( !defined $result )
{
my $pwd = App::MechaCPAN::get_project_dir;
$dest_dir = \"$pwd/local";
bless $dest_dir;
$result = $dest_dir;
weaken $dest_dir;
}
mkdir $dest_dir
unless -d $dest_dir;
return $dest_dir;
}
sub DESTROY
{
( run in 0.505 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )