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

# Content
1 # CVS wrapper
2 # -----------
3 # Configure the CVSmodule object to access a CVS repository and then
4 # invokecvs() commands as required.
5 #
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 }