summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm')
-rw-r--r--Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm205
1 files changed, 0 insertions, 205 deletions
diff --git a/Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm b/Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm
deleted file mode 100644
index 1c77ae24f58..00000000000
--- a/Master/tlpkg/tlperl/lib/CPANPLUS/Shell/Default/Plugins/CustomSource.pm
+++ /dev/null
@@ -1,205 +0,0 @@
-package CPANPLUS::Shell::Default::Plugins::CustomSource;
-use deprecate;
-
-use strict;
-use CPANPLUS::Error qw[error msg];
-use CPANPLUS::Internals::Constants;
-
-use Data::Dumper;
-use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
-
-use vars qw[$VERSION];
-$VERSION = "0.9135";
-
-=head1 NAME
-
-CPANPLUS::Shell::Default::Plugins::CustomSource - add custom sources to CPANPLUS
-
-=head1 SYNOPSIS
-
- ### elaborate help text
- CPAN Terminal> /? cs
-
- ### add a new custom source
- CPAN Terminal> /cs --add file:///path/to/releases
-
- ### list all your custom sources by
- CPAN Terminal> /cs --list
-
- ### display the contents of a custom source by URI or ID
- CPAN Terminal> /cs --contents file:///path/to/releases
- CPAN Terminal> /cs --contents 1
-
- ### Update a custom source by URI or ID
- CPAN Terminal> /cs --update file:///path/to/releases
- CPAN Terminal> /cs --update 1
-
- ### Remove a custom source by URI or ID
- CPAN Terminal> /cs --remove file:///path/to/releases
- CPAN Terminal> /cs --remove 1
-
- ### Write an index file for a custom source, to share
- ### with 3rd parties or remote users
- CPAN Terminal> /cs --write file:///path/to/releases
-
- ### Make sure to save your sources when adding/removing
- ### sources, so your changes are reflected in the cache:
- CPAN Terminal> x
-
-=head1 DESCRIPTION
-
-This is a C<CPANPLUS::Shell::Default> plugin that can add
-custom sources to your CPANPLUS installation. This is a
-wrapper around the C<custom module sources> code as outlined
-in L<CPANPLUS::Backend/CUSTOM MODULE SOURCES>.
-
-This allows you to extend your index of available modules
-beyond what's available on C<CPAN> with your own local
-distributions, or ones offered by third parties.
-
-=cut
-
-
-sub plugins {
- return ( cs => 'custom_source' )
-}
-
-my $Cb;
-my $Shell;
-my @Index = ();
-
-sub _uri_from_cache {
- my $self = shift;
- my $input = shift or return;
-
- ### you gave us a search number
- my $uri = $input =~ /^\d+$/
- ? $Index[ $input - 1 ] # remember, off by 1!
- : $input;
-
- my %files = reverse $Cb->list_custom_sources;
-
- ### it's an URI we know
- ### VMS can lower case all files, so make sure we check that too
- my $local = $files{ $uri };
- $local = $files{ lc $uri } if !$local && ON_VMS;
-
- if( $local ) {
- return wantarray
- ? ($uri, $local)
- : $uri;
- }
-
- ### couldn't resolve the input
- error(loc("Unknown URI/index: '%1'", $input));
- return;
-}
-
-sub _list_custom_sources {
- my $class = shift;
-
- my %files = $Cb->list_custom_sources;
-
- $Shell->__print( loc("Your remote sources:"), $/ ) if keys %files;
-
- my $i = 0;
- while(my($local,$remote) = each %files) {
- $Shell->__printf( " [%2d] %s\n", ++$i, $remote );
-
- ### remember, off by 1!
- push @Index, $remote;
- }
-
- $Shell->__print( $/ );
-}
-
-sub _list_contents {
- my $class = shift;
- my $input = shift;
-
- my ($uri,$local) = $class->_uri_from_cache( $input );
- unless( $uri ) {
- error(loc("--contents needs URI parameter"));
- return;
- }
-
- my $fh = OPEN_FILE->( $local ) or return;
-
- $Shell->__printf( " %s", $_ ) for sort <$fh>;
- $Shell->__print( $/ );
-}
-
-sub custom_source {
- my $class = shift;
- my $shell = shift; $Shell = $shell; # available to all methods now
- my $cb = shift; $Cb = $cb; # available to all methods now
- my $cmd = shift;
- my $input = shift || '';
- my $opts = shift || {};
-
- ### show a list
- if( $opts->{'list'} ) {
- $class->_list_custom_sources;
-
- } elsif ( $opts->{'contents'} ) {
- $class->_list_contents( $input );
-
- } elsif ( $opts->{'add'} ) {
- unless( $input ) {
- error(loc("--add needs URI parameter"));
- return;
- }
-
- $cb->add_custom_source( uri => $input )
- and $shell->__print(loc("Added remote source '%1'", $input), $/);
-
- $Shell->__print($/, loc("Remote source contains:"), $/, $/);
- $class->_list_contents( $input );
-
- } elsif ( $opts->{'remove'} ) {
- my($uri,$local) = $class->_uri_from_cache( $input );
- unless( $uri ) {
- error(loc("--remove needs URI parameter"));
- return;
- }
-
- 1 while unlink $local;
-
- $shell->__print( loc("Removed remote source '%1'", $uri), $/ );
-
- } elsif ( $opts->{'update'} ) {
- ### did we get input? if so, it's a remote part
- my $uri = $class->_uri_from_cache( $input );
-
- $cb->update_custom_source( $uri ? ( remote => $uri ) : () )
- and do { $shell->__print( loc("Updated remote sources"), $/ ) };
-
- } elsif ( $opts->{'write'} ) {
- $cb->write_custom_source_index( path => $input ) and
- $shell->__print( loc("Wrote remote source index for '%1'", $input), $/);
-
- } else {
- error(loc("Unrecognized command, see '%1' for help", '/? cs'));
- }
-
- return;
-}
-
-sub custom_source_help {
- return loc(
- $/ .
- ' # Plugin to manage custom sources from the default shell' . $/ .
- " # See the 'CUSTOM MODULE SOURCES' section in the " . $/ .
- ' # CPANPLUS::Backend documentation for details.' . $/ .
- ' /cs --list # list available sources' . $/ .
- ' /cs --add URI # add source' . $/ .
- ' /cs --remove URI | INDEX # remove source' . $/ .
- ' /cs --contents URI | INDEX # show packages from source'. $/ .
- ' /cs --update [URI | INDEX] # update source index' . $/ .
- ' /cs --write PATH # write source index' . $/
- );
-
-}
-
-1;
-