ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/URL/URL_cvs.pm
Revision: 1.9
Committed: Thu Feb 10 16:37:38 2000 UTC (25 years, 3 months ago) by williamc
Content type: text/plain
Branch: MAIN
Changes since 1.8: +14 -11 lines
Log Message:
add -d option to remove dir mess and allow for control of dir names

File Contents

# User Rev Content
1 williamc 1.1 #
2     # standard url interface for cvs
3     #
4 williamc 1.9 # Interface
5 williamc 1.1 #-------------
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.6 use File::Basename;
53 williamc 1.9 my ($dir,$dirname)=($location=~/(.*)\/(.*)/);
54 williamc 1.7 #my $dir=dirname($location);
55 williamc 1.9 my ($filename)=($url->file()=~/.*\/(.*)/);
56 williamc 1.8 use Utilities::AddDir;
57 williamc 1.9 #AddDir::adddir($dir);
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.9 push @cvscmd, ("-d", "$dirname");
65 williamc 1.7 if ( $version && ($version ne "") ) {
66 williamc 1.6 push @cvscmd, ("-r", "$version");
67 williamc 1.1 }
68     #
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 williamc 1.9 chdir $dir or die "unable to enter directory $dir\n";
78     print "Entering $dir to @cvscmd ".$url->file()."\n";
79 williamc 1.7 $self->{cvsobject}->invokecvs(@cvscmd, $url->file());
80 williamc 1.5 chdir $thisdir;
81 williamc 1.9 if ( -e $location."/".$filename ) {
82     $rv=$location."/".$filename; }
83     else {
84     #print $location."/".$filename." does not exist\n";
85     }
86     }
87     print $rv." returned $location\n";
88 williamc 1.3 return $rv;
89 williamc 1.1 }