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

File Contents

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