Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | |
2 | loginfo () { | |
3 | echo "DATE: "`date` | |
4 | echo "WRAPPER: $TRE_PROJECT/tools/bin/local_tool_wrapper" | |
5 | echo "USER: $user" | |
6 | echo "HOST: "`uname -n` | |
7 | echo "SYS: "`uname -s` `uname -r` | |
8 | echo "PWD: "`pwd` | |
9 | echo "ARGV: "$ARGV | |
10 | echo "TOOL: "$tool | |
11 | echo "VERSION: "$version | |
12 | echo "TRE_SEARCH: "$TRE_SEARCH | |
13 | echo "TRE_ENTRY: "$TRE_ENTRY | |
14 | } | |
15 | ||
16 | mailinfo () { | |
17 | echo To: $1 | |
18 | echo Subject: TRE_LOG | |
19 | echo "#" | |
20 | loginfo | |
21 | } | |
22 | ||
23 | mailerr () { | |
24 | echo "To: $1" | |
25 | echo "Subject: TRE ERROR" | |
26 | echo "#" | |
27 | echo "ERROR: $2" | |
28 | loginfo | |
29 | } | |
30 | ||
31 | log () { | |
32 | # Log to TRE_LOG if it is set properly. | |
33 | # It is STRONGLY recommended that TRE_LOG be an e-mail address | |
34 | # in order to avoid problems with several people simultanously | |
35 | # writing to the same file. | |
36 | # TRE_LOG must be set, but it can be broken. | |
37 | # TRE_ULOG is optional, for users who want their own logging. | |
38 | if [ ! -z "$TRE_LOG_ENABLED" ] ; then | |
39 | if [ ! -z "$TRE_LOG" ] ; then | |
40 | # Check first if TRE_LOG is a file (this is cheap). | |
41 | if [ -f $TRE_LOG -a -w $TRE_LOG ] ; then | |
42 | echo "#" >> $TRE_LOG | |
43 | loginfo >> $TRE_LOG | |
44 | elif /usr/lib/sendmail -bv $TRE_LOG 1>&- 2>&- ; then | |
45 | mailinfo $TRE_LOG | /usr/lib/sendmail $TRE_LOG | |
46 | else | |
47 | mailerr $user "Can't log to TRE_LOG=$TRE_LOG. Fix environment." | /usr/lib/sendmail $user | |
48 | fi | |
49 | else | |
50 | die "TRE_LOG environment variable is not set." | |
51 | fi | |
52 | fi | |
53 | # TRE_ULOG is optional user log. EMAIL address is recommended. | |
54 | if [ ! -z "$TRE_ULOG" ] ; then | |
55 | # Check first if TRE_ULOG is a file (this is cheap). | |
56 | if [ -f $TRE_ULOG -a -w $TRE_ULOG ] ; then | |
57 | echo "#" >> $TRE_ULOG | |
58 | loginfo >> $TRE_ULOG | |
59 | elif /usr/lib/sendmail -bv $TRE_ULOG 1>&- 2>&- ; then | |
60 | mailinfo $TRE_ULOG | /usr/lib/sendmail $TRE_ULOG | |
61 | else | |
62 | mailerr $user "Can't log to TRE_ULOG=$TRE_ULOG. Fix environment." | /usr/lib/sendmail $user | |
63 | fi | |
64 | fi | |
65 | } | |
66 | ||
67 | die () { | |
68 | message="$1" | |
69 | echo "$tool -> local_tool_wrapper: $message Exiting ..." | |
70 | if [ ! -z "$TRE_LOG" ] ; then | |
71 | if [ -f ${TRE_LOG} -a -w ${TRE_LOG} ] ; then | |
72 | echo "#" >> $TRE_LOG | |
73 | echo "ERROR: $message" >> $TRE_LOG | |
74 | loginfo >> $TRE_LOG | |
75 | elif /usr/lib/sendmail -bv $TRE_LOG 1>&- 2>&- ; then | |
76 | mailerr $TRE_LOG "$message" | /usr/lib/sendmail $TRE_LOG | |
77 | else | |
78 | echo "Can not log to TRE_LOG=${TRE_LOG}. Logging to '$user.'" | |
79 | mailerr $user "$message" | /usr/lib/sendmail $user | |
80 | fi | |
81 | fi | |
82 | # TRE_ULOG is optional user log. EMAIL address is recommended. | |
83 | if [ ! -z "$TRE_ULOG" ] ; then | |
84 | if [ -f ${TRE_ULOG} -a -w ${TRE_ULOG} ] ; then | |
85 | echo "#" >> $TRE_ULOG | |
86 | echo "ERROR: $message" >> $TRE_ULOG | |
87 | loginfo >> $TRE_ULOG | |
88 | elif /usr/lib/sendmail -bv $TRE_ULOG 1>&- 2>&- ; then | |
89 | mailerr $TRE_ULOG "$message" | /usr/lib/sendmail $TRE_ULOG | |
90 | else | |
91 | echo "Can not log to TRE_ULOG=${TRE_ULOG}. Logging to '$user.'" | |
92 | mailerr $user "$message" | /usr/lib/sendmail $user | |
93 | fi | |
94 | fi | |
95 | exit 1 | |
96 | } | |
97 | ||
98 | ############################ main ############################## | |
99 | ||
100 | tool=`basename $0` | |
101 | ARGV="$*" | |
102 | TRE_PROJECT=$DV_ROOT | |
103 | ||
104 | if [ -z "$TRE_PROJECT" ]; then | |
105 | die "TRE_PROJECT not defined" | |
106 | fi | |
107 | ||
108 | OS=`uname -s` | |
109 | if [ $OS = "SunOS" ] ; then | |
110 | user=`/usr/ucb/whoami` | |
111 | CPU=`uname -p` | |
112 | TRE_ROOT=$TRE_PROJECT/tools/SunOS/sparc | |
113 | fi | |
114 | if [ $OS = "Linux" ]; then | |
115 | user=`/usr/bin/whoami` | |
116 | CPU=`uname -m` | |
117 | TRE_ROOT=$TRE_PROJECT/tools/Linux/x86_64 | |
118 | fi | |
119 | ||
120 | ||
121 | ### Verify TRE_SEARCH and TRE_ENTRY are defined and non-null | |
122 | ||
123 | if [ -z "$TRE_SEARCH" ]; then | |
124 | die "TRE_SEARCH not defined" | |
125 | fi | |
126 | if [ -z "$TRE_ENTRY" ]; then | |
127 | die "TRE_ENTRY not defined" | |
128 | fi | |
129 | ||
130 | ### Get version, based on tool invoked, and $TRE_ENTRY | |
131 | ||
132 | if [ $tool = "configsrch" ] ; then | |
133 | exe=$TRE_ROOT/$tool | |
134 | exec $exe "$@" | |
135 | exit | |
136 | else | |
137 | ||
138 | version=`configsrch $tool $TRE_ENTRY 2>&1` | |
139 | stat=$? | |
140 | if [ $stat != 0 ] ; then | |
141 | die "configsrch returned error code $stat" | |
142 | fi | |
143 | ||
144 | ### Verify configsrch delivered a non-null version | |
145 | ||
146 | if [ -z "$version" ]; then | |
147 | die "No version set by configsrch" | |
148 | fi | |
149 | fi | |
150 | ||
151 | ### Assemble do-file name. If it's there, execute and test status. | |
152 | ||
153 | exe=$TRE_ROOT/$tool,$version.do | |
154 | if [ -x $exe ]; then | |
155 | $exe | |
156 | dostat=$? | |
157 | if [ $? != 0 ] ; then | |
158 | die "Error return from do file" | |
159 | fi | |
160 | fi | |
161 | ||
162 | exe=$TRE_ROOT/$tool,$version | |
163 | if [ -x $exe ]; then | |
164 | exec $exe "$@" | |
165 | else | |
166 | die "executable $exe not found!" | |
167 | fi |