Removed /usr/local from CDPATH
[clearscm.git] / lib / TriggerUtils.pm
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         $RCSfile: TriggerUtils.pm,v $
5 # Revision:     $Revision: 1.3 $
6 # Description:  Perl module for Trigger Utilities.
7 # Author:       Andrew@ClearSCM.com
8 # Created:      Fri Mar 12 10:17:44 PST 2004
9 # Modified:     $Date: 2011/01/09 01:04:33 $
10 # Language:     perl
11 #
12 # (c) Copyright 2005, ClearSCM, Inc. all rights reserved
13 #
14 ################################################################################
15 use warnings;
16
17 package TriggerUtils;
18   use base "Exporter";
19   use File::Spec;
20   use OSDep;
21
22   our @EXPORT = qw (
23     clearmsg
24     clearlog
25     clearlogmsg);
26
27   my ($abs_path, $me, $log_path, $logfile, $user);
28
29   BEGIN {
30     # Extract relative path and basename from script name.
31     $0 =~ /(.*)[\/\\](.*)/;
32
33     $abs_path   = (!defined $1) ? "." : File::Spec->rel2abs ($1);
34     $me         = (!defined $2) ? $0  : $2;
35
36     # Setup paths
37     $log_path   = "$abs_path$SEPARATOR..${SEPARATOR}triggers";
38
39     # Where to log things
40     $logfile    = "$log_path${SEPARATOR}trigger.log";
41
42     # Get username to use to tag messages
43     $user       = $ENV {CLEARCASE_USER};
44   } # BEGIN
45
46   sub clearmsg {
47     # Display a message to the user using clearprompt
48     my $message = shift;
49
50     `clearprompt proceed -newline -type error -prompt "$message" -mask abort -default abort`;
51   } # clearmsg
52
53   sub clearlog {
54     # Log a message to the log file
55     my $message = shift;
56
57     my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time);
58     $mon++;
59     $year += 1900;
60     $hour = "0" . $hour if $hour < 10;
61     $min  = "0" . $min  if $min  < 10;
62     my $date = "$mon/$mday/$year\@$hour:$min";
63
64     my $status = open (LOGFILE, ">>$logfile");
65
66     if (!defined $status) {
67       clearmsg "Catostrophic error:\n\n
68 Unable to open logfile ($logfile) to log the following message:\n\n
69 $message";
70       exit 1;
71     } # if
72
73     print LOGFILE "$me: $date: $user: $message\n";
74
75     close LOGFILE;
76   } # clearlog
77
78   sub clearlogmsg {
79     # Log message to log file then display it to user
80     my $message = shift;
81
82     clearlog $message;
83     clearmsg $message;
84   } # clearlogmsg
85
86 1;