Initial add of defaria.com
[clearscm.git] / defaria.com / Computers / code / lib / TriggerUtils.pm
1 package TriggerUtils;
2   require (Exporter);
3   @ISA = qw (Exporter);
4
5   @EXPORT = qw (clearmsg clearlog clearlogmsg);
6
7   BEGIN {
8     $me = substr ($0, rindex ($0, "\\") + 1);
9
10     # Set logfile appropriately: We use ipconfig to get the current host's
11     # IP address then determine whether we are in the US or China. If
12     # neither then we fallback to using T:/Triggers/Logs/trigger.log
13     my @ipconfig = grep (/IP Address/, `ipconfig`);
14     my ($ipaddr) = ($ipconfig[0] =~ /(\d{1,3}\.\d{1,3}.\d{1,3}\.\d{1,3})/);
15
16     # US is in the subnets of 192 and 172 while China is in the subnet of 10
17     if ($ipaddr =~ /^192|^172/) {
18       $logfile = "//sons-clearcase/Views/official/Tools/logs/trigger.log";
19     } elsif ($ipaddr =~ /^10/) {
20       $logfile = "//sons-cc/Views/official/Tools/logs/trigger.log";
21     } else {
22       die "Internal Error: Unable to the trigger.log!\n"
23     } # if
24
25     $user = $ENV {CLEARCASE_USER};
26   } # BEGIN
27
28   sub clearmsg {
29     # Display a message to the user using clearprompt
30     my ($message) = shift;
31
32     `clearprompt proceed -type error -prompt "$message" -mask abort -default abort`;
33   } # clearmsg
34
35   sub clearlog {
36     # Log a message to the log file
37     my ($message) = shift;
38     my ($date);
39
40     ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time);
41     $mon++;
42     $year += 1900;
43     $hour = "0" . $hour if $hour < 10;
44     $min  = "0" . $min  if $min  < 10;
45     $date = "$mon/$mday/$year\@$hour:$min";
46
47     open (LOGFILE, ">>$logfile") || die "Unable to open logfile ($logfile)\n";
48
49     print LOGFILE "$me: $date: $user: $message\n";
50
51     close (LOGFILE);
52   } # clearlog
53
54   sub clearlogmsg {
55     # Log message to log file then display it to user
56     my ($message) = shift;
57
58     clearlog ($message);
59     clearmsg ($message);
60   } # clearlogmsg
61
62 1;