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

# User Rev Content
1 williamc 1.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     }