ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/CVSmodule.pm
Revision: 1.2
Committed: Fri Oct 22 10:08:42 1999 UTC (25 years, 6 months ago) by williamc
Content type: text/plain
Branch: MAIN
Changes since 1.1: +4 -1 lines
Log Message:
Add interface documentation and set_passbase for pserver password file specification

File Contents

# User Rev Content
1 williamc 1.2 # CVS wrapper
2     # -----------
3     # Configure the CVSmodule object to access a CVS repository and then
4     # invokecvs() commands as required.
5 williamc 1.1 #
6     # Interface
7     # ---------
8     # new() : A new cvs modules
9     # set_base(base) : Set a base from which to read (i.e server name/path)
10     # set_auth(type) : Set authentication method e.g pserver, kserver, ext etc.
11     # set_user(username) : set a username for authentication if required
12     # set_passbase(file) : Override the default CVS_PASSFILE for pserver client
13     # set_passkey(encrypted) : For pserver method - set a password
14     # (encrypted)
15     # invokecvs(@cmds) : invoke a cvs command supplied in @cmds
16     #
17     package CVSmodule;
18     require 5.001;
19     require Exporter;
20     @ISA= qw(Exporter);
21    
22     sub new {
23     my $class=shift;
24     $self={};
25     $self->{myenv}={};
26     $self->{cvs}='cvs';
27     # $self->{cvs}='/usr/local/bin/cvs';
28     # Reset All variables
29     $self->{auth}="";
30     $self->{passkey}="";
31     $self->{user}="";
32     $self->{base}="";
33     $self->{passbase}=$ENV{HOME}."/.cvspass";
34     bless $self, $class;
35     return $self;
36     }
37    
38     sub set_passbase {
39     my $self=shift;
40     my $dir=shift;
41    
42     $self->{passbase}=$dir;
43     $self->env("CVS_PASSFILE", $dir);
44     }
45    
46     sub set_passkey {
47     use Utilities::SCRAMUtils;
48     $self=shift;
49     $self->{passkey}=shift;
50     my $file=$self->{passbase};
51     SCRAMUtils::updatelookup($file,
52     $self->{cvsroot}." ", $self->{passkey});
53     }
54    
55     sub set_base {
56     $self=shift;
57     $self->{base}=shift;
58     $self->_updatecvsroot();
59     }
60    
61     sub get_base {
62     }
63    
64     sub set_user {
65     $self=shift;
66     $self->{user}=shift;
67     if ( $self->{user} ne "" ) {
68     $self->{user}= $self->{user}.'@';
69     }
70     $self->_updatecvsroot();
71     }
72     sub set_auth {
73     $self=shift;
74     $self->{auth}=shift;
75     $self->{auth}=~s/^\:*(.*)\:*/\:$1\:/;
76     $self->_updatecvsroot();
77     }
78    
79     sub env {
80     $self=shift;
81     my $name=shift;
82     $self->{myenv}{$name}=shift;
83     }
84    
85     sub invokecvs {
86     $self=shift;
87     @cmds=@_;
88     #make sure weve got the right environment
89     foreach $key ( %{$self->{myenv}} ) {
90     $ENV{$key}=$self->{myenv}{$key}
91     }
92     #now perform the cvs command
93     #print ( join ' ', ( $self->{cvs}, "-d", $self->{cvsroot}, @cmds, "\n" ));
94     system( "$self->{cvs}" , "-d", "$self->{cvsroot}", @cmds );
95     }
96    
97     sub _updatecvsroot {
98     my $self=shift;
99     $self->{cvsroot}=$self->{auth}.$self->{user}.$self->{base};
100     }