ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/CVSmodule.pm
Revision: 1.12
Committed: Fri Jan 14 17:36:43 2011 UTC (14 years, 3 months ago) by muzaffar
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.11: +0 -0 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
merged SCRAM_V2 branch in to head

File Contents

# Content
1 =head1 NAME
2
3 Utilities::CVSmodule - A wrapper around CVS.
4
5 =head1 SYNOPSIS
6
7 my $obj = Utilities::CVSmodule->new();
8
9 =head1 DESCRIPTION
10
11 Configure the CVSmodule object to access a CVS repository and then
12 invokecvs() commands as required.
13
14 =head1 METHODS
15
16 =over
17
18 =item C<new()>
19
20 A new cvs modules object.
21
22 =item C<set_base(base)>
23
24 Set a base from which to read (i.e server name/path).
25
26 =item C<set_auth(type)>
27
28 Set authentication method e.g pserver, kserver, ext etc.
29
30 =item C<set_user(username)>
31
32 Set a username for authentication if required.
33
34 =item C<set_passbase(file)>
35
36 Override the default CVS_PASSFILE for pserver client.
37
38 =item C<set_passkey(encrypted)>
39
40 For pserver method - set a password (encrypted).
41
42 =item C<invokecvs(@cmds)>
43
44 Invoke a cvs command supplied in @cmds.
45
46 =item C<repository()>
47
48 Return a string to indicate the repository.
49
50 =cut
51
52 =back
53
54 =head1 AUTHOR
55
56 Originally written by Christopher Williams.
57
58 =head1 MAINTAINER
59
60 Shaun ASHBY
61
62 =cut
63
64 package Utilities::CVSmodule;
65 require Exporter;
66 use Utilities::AddDir;
67 require 5.004;
68 @ISA= qw(Exporter);
69
70 sub new {
71 my $class=shift;
72 my $self={};
73 bless $self, $class;
74 $self->{myenv}={};
75 $self->{cvs}='cvs';
76 # Reset All variables
77 $self->{auth}="";
78 $self->{passkey}="";
79 $self->{user}="";
80 $self->{base}="";
81 $self->set_passbase("/tmp/".$>."CVSmodule/.cvspass");
82 return $self;
83 }
84
85 sub set_passbase {
86 my $self=shift;
87 my $file=shift;
88
89 my $dir;
90 ($dir=$file)=~s/(.*)\/.*/$1/;
91 AddDir::adddir($dir);
92 $self->{passbase}=$file;
93 $self->env("CVS_PASSFILE", $file);
94 }
95
96 sub set_passkey {
97 use Utilities::SCRAMUtils;
98 $self=shift;
99 $self->{passkey}=shift;
100 my $file=$self->{passbase};
101 SCRAMUtils::updatelookup($file,
102 $self->{cvsroot}." ", $self->{passkey});
103 }
104
105 sub set_base {
106 $self=shift;
107 $self->{base}=shift;
108 $self->_updatecvsroot();
109 }
110
111 sub get_base {
112 }
113
114 sub set_user {
115 $self=shift;
116 $self->{user}=shift;
117 if ( $self->{user} ne "" ) {
118 $self->{user}= $self->{user}.'@';
119 }
120 $self->_updatecvsroot();
121 }
122 sub set_auth {
123 $self=shift;
124 $self->{auth}=shift;
125 $self->{auth}=~s/^\:*(.*)\:*/\:$1\:/;
126
127 $self->_updatecvsroot();
128 }
129
130 sub env {
131 $self=shift;
132 my $name=shift;
133 $self->{myenv}{$name}=shift;
134 }
135
136 sub invokecvs {
137 $self=shift;
138 @cmds=@_;
139 # make sure weve got the right environment
140 foreach $key ( %{$self->{myenv}} ) {
141 $ENV{$key}=$self->{myenv}{$key};
142 }
143 # now perform the cvs command
144 return ( system( "$self->{cvs}" ,"-Q", "-d", "$self->{cvsroot}", @cmds ));
145 }
146
147 sub _updatecvsroot {
148 my $self=shift;
149 $self->{cvsroot}=$self->{auth}.$self->{user}.$self->{base};
150 }
151
152 sub cvsroot {
153 my $self=shift;
154 return $self->{cvsroot};
155 }
156
157 sub repository {
158 my $self=shift;
159 return $self->{base};
160 }