summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-04-26 22:16:26 +0000
committerKarl Berry <karl@freefriends.org>2015-04-26 22:16:26 +0000
commit342e672574c4e67d510e46ab6acd0e21a7d0cf54 (patch)
tree79e04202d08c0404bbd780bd26c1e34710e539b6 /Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm
parentbe2706af7c57a0ef0f4d4e9f684ca4ef74922a82 (diff)
(tl)perl 5.20.2 for windows, from siep
git-svn-id: svn://tug.org/texlive/trunk@37064 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm')
-rw-r--r--Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm343
1 files changed, 0 insertions, 343 deletions
diff --git a/Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm b/Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm
deleted file mode 100644
index bf7482d3da1..00000000000
--- a/Master/tlpkg/tlperl/lib/CPANPLUS/Shell.pm
+++ /dev/null
@@ -1,343 +0,0 @@
-package CPANPLUS::Shell;
-use deprecate;
-
-use strict;
-
-use CPANPLUS::Error;
-use CPANPLUS::Configure;
-use CPANPLUS::Internals::Constants;
-
-use Module::Load qw[load];
-use Params::Check qw[check];
-use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
-
-$Params::Check::VERBOSE = 1;
-
-use vars qw[@ISA $SHELL $DEFAULT $VERSION];
-
-$VERSION = "0.9135";
-$DEFAULT = SHELL_DEFAULT;
-
-=pod
-
-=head1 NAME
-
-CPANPLUS::Shell - base class for CPANPLUS shells
-
-=head1 SYNOPSIS
-
- use CPANPLUS::Shell; # load the shell indicated by your
- # config -- defaults to
- # CPANPLUS::Shell::Default
-
- use CPANPLUS::Shell qw[Classic] # load CPANPLUS::Shell::Classic;
-
- my $ui = CPANPLUS::Shell->new();
- my $name = $ui->which; # Find out what shell you loaded
-
- $ui->shell; # run the ui shell
-
-
-=head1 DESCRIPTION
-
-This module is the generic loading (and base class) for all C<CPANPLUS>
-shells. Through this module you can load any installed C<CPANPLUS>
-shell.
-
-Just about all the functionality is provided by the shell that you have
-loaded, and not by this class (which merely functions as a generic
-loading class), so please consult the documentation of your shell of
-choice.
-
-=cut
-
-sub import {
- my $class = shift;
- my $option = shift;
-
- ### find out what shell we're supposed to load ###
- $SHELL = $option
- ? $class . '::' . $option
- : do { ### XXX this should offer to reconfigure
- ### CPANPLUS, somehow. --rs
- ### XXX load Configure only if we really have to
- ### as that means any $Conf passed later on will
- ### be ignored in favour of the one that was
- ### retrieved via ->new --kane
- my $conf = CPANPLUS::Configure->new() or
- die loc("No configuration available -- aborting") . $/;
- $conf->get_conf('shell') || $DEFAULT;
- };
-
- ### load the shell, fall back to the default if required
- ### and die if even that doesn't work
- EVAL: {
- eval { load $SHELL };
-
- if( $@ ) {
- my $err = $@;
-
- die loc("Your default shell '%1' is not available: %2",
- $DEFAULT, $err) .
- loc("Check your installation!") . "\n"
- if $SHELL eq $DEFAULT;
-
- warn loc("Failed to use '%1': %2", $SHELL, $err),
- loc("Switching back to the default shell '%1'", $DEFAULT),
- "\n";
-
- $SHELL = $DEFAULT;
- redo EVAL;
- }
- }
- @ISA = ($SHELL);
-}
-
-sub which { return $SHELL }
-
-1;
-
-###########################################################################
-### abstracted out subroutines available to programmers of other shells ###
-###########################################################################
-
-package CPANPLUS::Shell::_Base::ReadLine;
-
-use strict;
-use vars qw($AUTOLOAD $TMPL);
-
-use FileHandle;
-use CPANPLUS::Error;
-use Params::Check qw[check];
-use Module::Load::Conditional qw[can_load];
-use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
-
-$Params::Check::VERBOSE = 1;
-
-
-$TMPL = {
- brand => { default => '', strict_type => 1 },
- prompt => { default => '> ', strict_type => 1 },
- pager => { default => '' },
- backend => { default => '' },
- term => { default => '' },
- format => { default => '' },
- dist_format => { default => '' },
- remote => { default => undef },
- noninteractive => { default => '' },
- cache => { default => [ ] },
- settings => { default => { install_all_prereqs => undef },
- no_override => 1 },
- _old_sigpipe => { default => '', no_override => 1 },
- _old_outfh => { default => '', no_override => 1 },
- _signals => { default => { INT => { } }, no_override => 1 },
-};
-
-### autogenerate accessors ###
-for my $key ( keys %$TMPL ) {
- no strict 'refs';
- *{__PACKAGE__."::$key"} = sub {
- my $self = shift;
- $self->{$key} = $_[0] if @_;
- return $self->{$key};
- }
-}
-
-sub _init {
- my $class = shift;
- my %hash = @_;
-
- my $self = check( $TMPL, \%hash ) or return;
-
- bless $self, $class;
-
- ### signal handler ###
- $SIG{INT} = $self->_signals->{INT}->{handler} =
- sub {
- unless ( $self->_signals->{INT}->{count}++ ) {
- warn loc("Caught SIGINT"), "\n";
- } else {
- warn loc("Got another SIGINT"), "\n"; die;
- }
- };
- ### end sig handler ###
-
- return $self;
-}
-
-### display shell's banner, takes the Backend object as argument
-sub _show_banner {
- my $self = shift;
- my $cpan = $self->backend;
- my $term = $self->term;
-
- ### Tries to probe for our ReadLine support status
- # a) under an interactive shell?
- my $rl_avail = (!$term->isa('CPANPLUS::Shell::_Faked'))
- # b) do we have a tty terminal?
- ? (-t STDIN)
- # c) should we enable the term?
- ? (!$self->__is_bad_terminal($term))
- # d) external modules available?
- ? ($term->ReadLine ne "Term::ReadLine::Stub")
- # a+b+c+d => "Smart" terminal
- ? loc("enabled")
- # a+b+c => "Stub" terminal
- : loc("available (try 'i Term::ReadLine::Perl')")
- # a+b => "Bad" terminal
- : loc("disabled")
- # a => "Dumb" terminal
- : loc("suppressed")
- # none => "Faked" terminal
- : loc("suppressed in batch mode");
-
- $rl_avail = loc("ReadLine support %1.", $rl_avail);
- $rl_avail = "\n*** $rl_avail" if (length($rl_avail) > 45);
-
- $self->__print(
- loc("%1 -- CPAN exploration and module installation (v%2)",
- $self->which, $self->which->VERSION()), "\n",
- loc("*** Please report bugs to <bug-cpanplus\@rt.cpan.org>."), "\n",
- loc("*** Using CPANPLUS::Backend v%1. %2",
- $cpan->VERSION, $rl_avail), "\n\n"
- );
-}
-
-### checks whether the Term::ReadLine is broken and needs to fallback to Stub
-sub __is_bad_terminal {
- my $self = shift;
- my $term = $self->term;
-
- return unless $^O eq 'MSWin32';
-
- ### replace the term with the default (stub) one
- return $self->term(Term::ReadLine::Stub->new( $self->brand ) );
-}
-
-### open a pager handle
-sub _pager_open {
- my $self = shift;
- my $cpan = $self->backend;
- my $cmd = $cpan->configure_object->get_program('pager') or return;
-
- $self->_old_sigpipe( $SIG{PIPE} );
- $SIG{PIPE} = 'IGNORE';
-
- my $fh = new FileHandle;
- unless ( $fh->open("| $cmd") ) {
- error(loc("could not pipe to %1: %2\n", $cmd, $!) );
- return;
- }
-
- $fh->autoflush(1);
-
- $self->pager( $fh );
- $self->_old_outfh( select $fh );
-
- return $fh;
-}
-
-### print to the current pager handle, or STDOUT if it's not opened
-sub _pager_close {
- my $self = shift;
- my $pager = $self->pager or return;
-
- $pager->close if (ref($pager) and $pager->can('close'));
-
- $self->pager( undef );
-
- select $self->_old_outfh;
- $SIG{PIPE} = $self->_old_sigpipe;
-
- return 1;
-}
-
-
-
-{
- my $win32_console;
-
- ### determines row count of current terminal; defaults to 25.
- ### used by the pager functions
- sub _term_rowcount {
- my $self = shift;
- my $cpan = $self->backend;
- my %hash = @_;
-
- my $default;
- my $tmpl = {
- default => { default => 25, allow => qr/^\d$/,
- store => \$default }
- };
-
- check( $tmpl, \%hash ) or return;
-
- if ( $^O eq 'MSWin32' ) {
- if ( can_load( modules => { 'Win32::Console' => '0.0' } ) ) {
- $win32_console ||= Win32::Console->new();
- my $rows = ($win32_console->Info)[-1];
- return $rows;
- }
-
- } else {
- local $Module::Load::Conditional::VERBOSE = 0;
- if ( can_load(modules => {'Term::Size' => '0.0'}) ) {
- my ($cols, $rows) = Term::Size::chars();
- return $rows;
- }
- }
- return $default;
- }
-}
-
-### Custom print routines, mainly to be able to catch output
-### in test cases, or redirect it if need be
-{ sub __print {
- my $self = shift;
- print @_;
- }
-
- sub __printf {
- my $self = shift;
- my $fmt = shift;
-
- ### MUST specify $fmt as a separate param, and not as part
- ### of @_, as it will then miss the $fmt and return the
- ### number of elements in the list... =/ --kane
- $self->__print( sprintf( $fmt, @_ ) );
- }
-}
-
-1;
-
-=pod
-
-=head1 BUG REPORTS
-
-Please report bugs or other issues to E<lt>bug-cpanplus@rt.cpan.org<gt>.
-
-=head1 AUTHOR
-
-This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.
-
-=head1 COPYRIGHT
-
-The CPAN++ interface (of which this module is a part of) is copyright (c)
-2001 - 2007, Jos Boumans E<lt>kane@cpan.orgE<gt>. All rights reserved.
-
-This library is free software; you may redistribute and/or modify it
-under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<CPANPLUS::Shell::Default>, L<CPANPLUS::Shell::Classic>, L<cpanp>
-
-=cut
-
-# Local variables:
-# c-indentation-style: bsd
-# c-basic-offset: 4
-# indent-tabs-mode: nil
-# End:
-# vim: expandtab shiftwidth=4:
-