Removed /usr/local from CDPATH
[clearscm.git] / ecrc / ecrc
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         ecrc: ECR client
5 # Description:  This script is a test client for ecrd.
6 # Author:       Andrew@DeFaria.com
7 # Created:      Tue Feb 15 11:01:24 PST 2005
8 # Modified:
9 # Language:     Perl
10 #
11 # (c) Copyright 2005, LynuxWorks, all rights reserved.
12 #
13 ################################################################################
14 use strict;
15 use warnings;
16 use File::Spec;
17
18 my ($me, $abs_path, $lib_path, $bin_path, $log_path);
19
20 BEGIN {
21   # Extract relative path and basename from script name.
22   $0 =~ /(.*)[\/\\](.*)/;
23
24   $abs_path     = (!defined $1) ? "." : File::Spec->rel2abs ($1);
25   $me           = (!defined $2) ? $0  : $2;
26   $me           =~ s/\.pl$//;
27
28   # Setup paths
29   $bin_path             = "$abs_path";
30   $lib_path             = "$abs_path/../lib";
31   $log_path             = "$abs_path/../log";
32
33   # Add the appropriate path to our modules to @INC array.
34   unshift (@INC, "$lib_path");
35 } # BEGIN
36
37 use ecrc;
38
39 # Global variables
40 my $servername          = (!defined $ENV {ECRDSERVER}) ? "lynx12" : $ENV {ECRDSERVER};
41 my $port                = (!defined $ENV {ECRDPORT})   ? 1500     : $ENV {ECRDPORT};
42 my $ecr                 = "";
43 my @query_fields        = ();
44 my $verbose;
45 my $debug;
46 my $key;
47 my $value;
48 my %fields;
49 my @ecrs;
50
51 sub Usage {
52   my $msg = shift;
53
54   print "ERROR: $msg\n\n" if defined $msg;
55
56   print "Usage: ecrc [-u] [-v] [-d] [ -s <server> ] [ -p <port> ] ";
57   print "ECR [ fieldname... ]\n";
58   print "\nWhere:\n\n";
59   print "\t-u:\t\tDisplay usage\n";
60   print "\t-v:\t\tTurn on verbose mode (Default off)\n";
61   print "\t-d:\t\tTurn on debug mode (Default off)\n";
62   print "\t-s:\t\tUse server named servername (Default lynx12)\n";
63   print "\t-s:\t\tUse port (Default 1500)\n";
64   print "\tECR:\t\tECR number to obtain info about\n";
65   print "\tfieldname:\tECR field names to retrieve info about (Default all)\n";
66
67   exit 1;
68 } # Usage
69
70 sub GetParms {
71   while ($ARGV [0]) {
72     if ($ARGV [0] eq "-v") {
73       $verbose          = 1;
74       ecrc::set_verbose;
75     } elsif ($ARGV [0] eq "-d") {
76       $debug            = 1;
77       ecrc::set_debug;
78     } elsif ($ARGV [0] eq "-u") {
79       Usage;
80     } elsif ($ARGV [0] eq "-p") {
81       shift @ARGV;
82       Usage "Port not specified" if !$ARGV [0];
83       $port = shift @ARGV;
84     } elsif ($ARGV [0] eq "-s") {
85       shift @ARGV;
86       Usage "Server name not specified" if !$ARGV [0];
87       $servername = shift @ARGV;
88     } else {
89       $ecr = shift (@ARGV);
90       last;
91     } # if
92     shift @ARGV;
93   } # while
94
95   @query_fields = @ARGV;
96
97   # Downshift any query_fields
98   my $i = 0;
99
100   foreach (@query_fields) {
101     $query_fields [$i++] = lc $_;
102   } # foreach
103 } # GetParms
104
105 # Main code
106 GetParms;
107
108 die "Unable to connect to $servername:$port\n" if !ecrc::Connect ($servername, $port);
109
110 if ($ecr) {
111   if ($ecr eq "\*") {
112     @ecrs = ecrc::GetECRRecord $ecr;
113
114     foreach (@ecrs) {
115       print "$_\n";
116     } # foreach
117
118     exit;
119   } # if
120
121   %fields = ecrc::GetECRRecord ($ecr);
122
123   if (!%fields) {
124     print "ECR $ecr was not found\n";
125   } else {
126     if (@query_fields) {
127       foreach (@query_fields) {
128         if (@query_fields > 1) {
129           if (defined $fields{$_}) {
130             print "$_: $fields{$_}\n";
131           } else {
132             print "$_: <FIELD NOT FOUND>\n";
133           } # if
134         } else {
135           if (defined $fields{$_}) {
136             print "$fields{$_}\n";
137           } else {
138             print "$_: <FIELD NOT FOUND>\n";
139           } # if
140         } # if
141       } # foreach
142     } else {
143       while (($key, $value) = each (%fields)) {
144         print "$key: $value\n";
145       } # while
146     } # if
147   } # if
148 } else {
149   print "Enter ECR:";
150
151   while (my $command = <STDIN>) {
152     chomp $command;
153     last if $command =~ m/exit|quit/i;
154
155     $ecr = $command;
156
157     if ($ecr eq "\*") {
158       my @ecrs = ecrc::GetECRRecord $ecr;
159
160       foreach (@ecrs) {
161         print "$_\n";
162       } # foreach
163     } else {
164       %fields   = ecrc::GetECRRecord $ecr;
165
166       if (!%fields) {
167         print "ECR $ecr was not found\n";
168       } else {
169         while (($key, $value) = each (%fields)) {
170           print "$key: $value\n";
171         } # while
172       } # if
173     } # if
174
175       print "Enter ECR:";
176   } # while
177 } # if