ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/URL/URL_cvs.pm
Revision: 1.7
Committed: Fri Nov 12 17:24:33 1999 UTC (25 years, 6 months ago) by williamc
Content type: text/plain
Branch: MAIN
Changes since 1.6: +10 -33 lines
Log Message:
update to new interface using url objects

File Contents

# User Rev Content
1 williamc 1.1 #
2     # standard url interface for cvs
3     #
4     #Interface
5     #-------------
6     # new() :
7 williamc 1.5 # get(url,$dirname) :
8 williamc 1.1
9 williamc 1.4 package URL::URL_cvs;
10 williamc 1.1 require 5.001;
11     use Utilities::CVSmodule;
12 williamc 1.4 use URL::URL_base;
13 williamc 1.1 use Carp;
14 williamc 1.4 @ISA = qw(URL::URL_base);
15 williamc 1.1
16     sub init {
17     my $self=shift;
18     $self->{cvsco}="co";
19     }
20    
21     sub setbase {
22     my $self=shift;
23 williamc 1.7 my $base=shift;
24 williamc 1.1 my $varhash=shift;
25    
26     my $auth=$$varhash{'auth'};
27    
28     # a new cvs object
29     $self->{cvsobject}=CVSmodule->new();
30     $self->{cvsobject}->set_base($base);
31     $self->{cvsobject}->set_auth($auth);
32     if ( exists $$varhash{'user'} ) {
33     $self->{cvsobject}->set_user($$varhash{'user'});
34     }
35     if ( exists $$varhash{'passkey'} ) {
36     $self->{cvsobject}->set_passkey($$varhash{'passkey'});
37     }
38     if ( exists $$varhash{'method'} ) {
39     $self->{cvsco}=$$varhash{'method'};
40     }
41     # Alternative dir name to co to
42     if ( exists $$varhash{'name'} ) {
43     $self->{dirname}=$$varhash{'name'};
44     }
45     }
46    
47     sub get {
48     my $self=shift;
49     my $url=shift;
50 williamc 1.6 my $location=shift;
51 williamc 1.1
52 williamc 1.7 my $dirname;
53 williamc 1.6 use File::Basename;
54 williamc 1.7 #($dirname=$location)=~s/.*\/(.*)/$1/;
55     #my $dir=dirname($location);
56     $dirname=$url->file();
57     $dir=$location;
58 williamc 1.6
59     my @cvscmd=($self->{cvsco});
60 williamc 1.7 $self->setbase($url->base(),$url->vars());
61     my $version=$url->param('version');
62 williamc 1.6 my $rv="";
63 williamc 1.1
64 williamc 1.7 if ( $version && ($version ne "") ) {
65 williamc 1.6 push @cvscmd, ("-r", "$version");
66 williamc 1.1 }
67 williamc 1.6 push @cvscmd, ("-d", $dirname);
68 williamc 1.1 #
69     # Check to see we have a server and if so attempt the checkout
70     #
71     if ( ! defined $self->{cvsobject} ) {
72     print "urlhandler error: undefined cvs server for $module\n";
73     }
74     else {
75 williamc 1.5 use Cwd;
76     my $thisdir=cwd();
77     chdir $dir;
78 williamc 1.7 $self->{cvsobject}->invokecvs(@cvscmd, $url->file());
79 williamc 1.5 chdir $thisdir;
80 williamc 1.6 if ( -e $location ) { $rv=$location } ;
81 williamc 1.1 }
82 williamc 1.3 return $rv;
83 williamc 1.1 }