/[MITgcm]/mitgcm.org/front_content/parse_emails
ViewVC logotype

Diff of /mitgcm.org/front_content/parse_emails

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.6 by edhill, Fri Oct 6 19:49:59 2006 UTC revision 1.19 by jmc, Mon Feb 2 19:16:45 2009 UTC
# Line 11  usage() Line 11  usage()
11  {  {
12      echo      echo
13      echo "Usage:  $0 [OPTIONS]"      echo "Usage:  $0 [OPTIONS]"
14      echo      echo
15      echo "where possible OPTIONS are:"      echo "where possible OPTIONS are:"
16      echo "  (-help|-h)           print usage"      echo "  (-h|-help)           print usage"
17      echo "  (-ind |-i )DIR       get mpack-created emails from DIR"      echo "  (-s|-silent)         silent mode"
18        echo "  (-v|-verbose)        verbose mode"
19        echo "  (-i |-ind )DIR       get mpack-created emails from DIR"
20      echo "                         [def=\"$INDIR\"]"      echo "                         [def=\"$INDIR\"]"
21      echo "  (-outd |-o )DIR      write the data to DIR"      echo "  (-o |-outd )DIR      write the data to DIR"
22      echo "                         [def=\"$OUTDIR\"]"      echo "                         [def=\"$BASEDIR/$monthDir\"]"
23      echo "  (-tempd |-t )DIR     use temporary directory DIR"      echo "  (-t |-tempd )DIR     use temporary directory DIR"
24      echo "                         [def=\"$TEMPDIR\"]"      echo "                         [def=\"$TEMPDIR\"]"
25      echo      echo "  (-u |-unpack )EXE    use executable EXE to unpack e-mails"
26        echo "                         [def=\"$MUNPACK\"]"
27        echo "  (-a |-addr )ADDR     send e-mail to ADDR if Error"
28        echo "                         [def='"$ADDRERR"']"
29        echo
30      exit 1      exit 1
31  }  }
32    
33  # defaults  # defaults
34  INDIR="/u/edhill/Mail/MITgcm-test"  INDIR="/u/u2/jmc/Mail/MITgcm-test"
35    BASEDIR="/u/u0/httpd/html/testing/results"
36    monthDir=`date +%Y`"_"`date +%m`
37  OUTDIR=  OUTDIR=
38  TEMPDIR=./ptmp  TEMPDIR=./ptmp
39  MUNPACK=/usr/local/bin/munpack  MUNPACK=munpack
40    ADDRERR=
41    PRT=1
42    
43  #  Parse options  #  Parse options
44  ac_prev=  ac_prev=
# Line 42  for ac_option ; do Line 52  for ac_option ; do
52      fi      fi
53    
54      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
55        
56      case $ac_option in      case $ac_option in
57                    
58          -help | --help | -h | --h)          -help | --help | -h | --h)
59              usage ;;              usage ;;
60            -s | --s | -silent | --silent)
61                PRT=0 ;;
62            -v | --v | -verbose | --verbose)
63                PRT=2 ;;
64                    
65          -ind | --ind | -i | --i)          -ind | --ind | -i | --i)
66              ac_prev=INDIR ;;              ac_prev=INDIR ;;
67          --ind=* | -ind=* | --i=* | -i=*)          --ind=* | -ind=* | --i=* | -i=*)
68              INDIR=$ac_optarg ;;              INDIR=$ac_optarg ;;
69            
70          -outd | --outd | -o | --o)          -outd | --outd | -o | --o)
71              ac_prev=OUTDIR ;;              ac_prev=OUTDIR ;;
72          --outd=* | -outd=* | --o=* | -o=*)          --outd=* | -outd=* | --o=* | -o=*)
73              OUTDIR=$ac_optarg ;;              OUTDIR=$ac_optarg ;;
74            
75          -tempd | --tempd | -t | --t)          -tempd | --tempd | -t | --t)
76              ac_prev=TEMPDIR ;;              ac_prev=TEMPDIR ;;
77          --tempd=* | -tempd=* | --t=* | -t=*)          --tempd=* | -tempd=* | --t=* | -t=*)
78              TEMPDIR=$ac_optarg ;;              TEMPDIR=$ac_optarg ;;
79            
80            -u | --u | -unpack | --unpack)
81                ac_prev=MUNPACK ;;
82            -u=* | --u=* | -unpack=* | --unpack=*)
83                MUNPACK=$ac_optarg ;;
84    
85            -a | --a | -addr | --addr)
86                ac_prev=ADDRERR ;;
87            -a=* | --a=* | -addr=* | --addr=*)
88                ADDRERR=$ac_optarg ;;
89    
90          *)          *)
91              # copy the file list to FL_#              # copy the file list to FL_#
92                date
93              echo "Error: don't understand argument \"$ac_option\""              echo "Error: don't understand argument \"$ac_option\""
94              usage              usage
95              ;;              ;;
96            
97       esac       esac
98        
99  done  done
100    
101    if test ! -x $MUNPACK ; then
102            date
103            echo "ERROR: \"$MUNPACK\" is not executable"
104            exit 2
105    fi
106  if test "x$OUTDIR" = x ; then  if test "x$OUTDIR" = x ; then
107      OUTDIR="/u/u0/httpd/html/testing/results/"`date +%Y`"_"`date +%m`    OUTDIR="$BASEDIR/$monthDir"
108    else
109      monthDir=0
110  fi  fi
111  if test ! -e $OUTDIR ; then  if test ! -e $OUTDIR ; then
112      mkdir $OUTDIR      mkdir $OUTDIR
113      RETVAL=$?      RETVAL=$?
114      if test "x$RETVAL" = x ; then      if test "x$RETVAL" != x0 ; then
115            date
116          echo "ERROR: directory \"$OUTDIR\" doesn't exist and can't be created"          echo "ERROR: directory \"$OUTDIR\" doesn't exist and can't be created"
117          exit 1          exit 3
118      fi      fi
119        chgrp gcmpack $OUTDIR
120        chmod 775 $OUTDIR
121  fi  fi
122    
 echo "Using OUTDIR=\"$OUTDIR\""  
 echo "Using INDIR=\"$INDIR\""  
   
123  all_files=`ls -1 $INDIR`  all_files=`ls -1 $INDIR`
124    nb_files=`echo "$all_files" | grep -c '^msg\.'`
125    
126    if test $PRT = 1 ; then
127      echo "Using OUTDIR=\"$OUTDIR\""
128      echo "Using INDIR=\"$INDIR\""
129      echo -n "Unpacking the emails ..."
130    elif test $nb_files != 0 ; then
131      echo -n "Unpacking $nb_files emails ("`date`
132      if test "x$ADDRERR" != x ; then
133         echo -n ", err-msg: '$ADDRERR'"
134      fi
135      echo ")"
136      echo " from '$INDIR' to '$OUTDIR'"
137    fi
138    
 echo -n "Unpacking the emails ..."  
139  for file in $all_files ; do  for file in $all_files ; do
140    
141      #  create local copy      #  create local copy
142      test -e $TEMPDIR  &&  rm -rf $TEMPDIR      test -e $TEMPDIR  &&  rm -rf $TEMPDIR
143      mkdir $TEMPDIR      mkdir $TEMPDIR
144      cp $INDIR"/"$file $TEMPDIR      RETVAL=$?
145        if test "x$RETVAL" = x0 ; then
146          cp $INDIR"/"$file $TEMPDIR
147          RETVAL=$?
148        fi
149        if test "x$RETVAL" != x0 ; then
150          if test "x$ADDRERR" != x ; then
151            echo "parsing email error" > tmp.$$
152            echo " processing file: '$INDIR/$file'" >> tmp.$$
153            echo -n "'mkdir $TEMPDIR' or 'cp $INDIR/$file $TEMPDIR'" >> tmp.$$
154            echo " returns error $RETVAL" >> tmp.$$
155            mail -s 'parse_emails err_0' $ADDRERR < tmp.$$
156            rm -f tmp.$$
157          fi
158          mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
159          continue
160        fi
161    
162      #  ignore multi-part messages      #  ignore multi-part messages
163      grep "Content-Type: message/partial" $INDIR"/"$file > /dev/null 2>&1      grep "Content-Type: message/partial" $INDIR"/"$file > /dev/null 2>&1
164      RETVAL=$?      RETVAL=$?
165      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
166          continue        if test "x$ADDRERR" != x ; then
167            echo "parsing email error" > tmp.$$
168            echo 'grep "Content-Type: message/partial" returns error:' $RETVAL >> tmp.$$
169            ls -l $INDIR"/"$file >> tmp.$$
170            mail -s 'parse_emails err_1' $ADDRERR < tmp.$$
171            rm -f tmp.$$
172          fi
173          mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
174          continue
175      fi      fi
176    
177      #  munpack      #  munpack
178      mun=`( cd $TEMPDIR ; $MUNPACK $file | cut -d ' ' -f 1 | head -1 )`      mun=`( cd $TEMPDIR ; $MUNPACK $file | cut -d ' ' -f 1 | head -1 )`
179      RETVAL=$?      RETVAL=$?
180      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
181          continue        if test "x$ADDRERR" != x ; then
182            echo "parsing email error" > tmp.$$
183            echo "$MUNPACK $file returns error: $RETVAL" >> tmp.$$
184            ls -l $INDIR"/"$file >> tmp.$$
185            mail -s 'parse_emails err_2' $ADDRERR < tmp.$$
186            rm -f tmp.$$
187          fi
188          mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
189          continue
190      fi      fi
191    
192      #  un-tar      #  un-tar
193      ( cd $TEMPDIR ; tar -xzvf $mun > out )      ( cd $TEMPDIR ; tar -xzvf $mun > out )
194      RETVAL=$?      RETVAL=$?
195      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
196          continue        if test "x$ADDRERR" != x ; then
197            echo "parsing email error" > tmp.$$
198            echo "tar -xzvf $mun returns error:" $RETVAL >> tmp.$$
199            ls -l $INDIR"/"$file >> tmp.$$
200            ls -l $mun >> tmp.$$
201            mail -s 'parse_emails err_3' $ADDRERR < tmp.$$
202            rm -f tmp.$$
203          fi
204          mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
205          continue
206      fi      fi
207      tdir=`cat $TEMPDIR"/out" | head -1 | sed -e 's|^./||g' | cut -d '/' -f 1`      tdir=`cat $TEMPDIR"/out" | head -1 | sed -e 's|^./||g' | cut -d '/' -f 1`
208      rm -f $TEMPDIR"/out"      rm -f $TEMPDIR"/out"
209    
210      #  copy to $OUTDIR and rename if necessary      #  select which Monthly Output Dir:
211      if test -e $OUTDIR"/"$tdir ; then      locDir=$OUTDIR
212        if test "x$monthDir" != x0 ; then
213          dd=`echo $tdir | sed 's/_/ /g' | awk '{ for(i=1;i<=NF;i++) print $i }'\
214                   | grep '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' | tail -1`
215          mn=`echo $dd | sed 's/..$//' | sed 's/..$/_&/'`
216          if test "x$mn" != "x$monthDir" ; then
217           if test "x$mn" = x ; then
218            if test $PRT = 2 ; then echo " cannot get month from '$tdir'" ; fi
219           else
220           #  could comment out this line:
221           #if test $PRT = 2 ; then echo " chg month: '$mn' for '$tdir'" ; fi
222            locDir="$BASEDIR/$mn"
223            if test ! -d $locDir ; then
224              if test $PRT = 2 ; then echo "NO DIR: '$locDir' => '$tdir' POSTPONED" ; fi
225              if test "x$ADDRERR" != x ; then
226                echo "parsing email error" > tmp.$$
227                echo "no dir '$locDir' for outp. '$tdir'" > tmp.$$
228                ls -l $INDIR"/"$file >> tmp.$$
229                mail -s 'parse_emails err_4' $ADDRERR < tmp.$$
230                rm -f tmp.$$
231              fi
232              continue
233            fi
234           fi
235          fi
236        fi
237    
238        #  copy to $locDir and rename if necessary
239        sdir=$tdir
240        if test -e $locDir"/"$tdir ; then
241          ad=0          ad=0
242          while test -e $OUTDIR"/"$tdir"_"$ad ; do          while test -e $locDir"/"$tdir"_"$ad ; do
243              ad=$(( $ad + 1 ))              ad=$(( $ad + 1 ))
244          done          done
245          mv $TEMPDIR"/"$tdir $OUTDIR"/"$tdir"_"$ad > /dev/null 2>&1          sdir=$tdir"_"$ad
246          chmod -R a+rx $OUTDIR"/"$tdir"_"$ad > /dev/null 2>&1      fi
247          gzip $OUTDIR"/"$tdir"_"$ad"/output.txt"      if test $PRT = 2 ; then
248      else        if test "x$locDir" = "x$OUTDIR"
249          mv $TEMPDIR"/"$tdir $OUTDIR > /dev/null 2>&1        then echo " '$sdir'"
250          chmod -R a+rx $OUTDIR"/"$tdir > /dev/null 2>&1        else echo " '$sdir' => '$locDir'"
251          gzip $OUTDIR"/"$tdir"/output.txt"        fi
252      fi      fi
253        mv $TEMPDIR"/"$tdir $locDir"/"$sdir > /dev/null 2>&1
254        RETVAL=$?
255        if test "x$RETVAL" != x0 ; then
256          if test "x$ADDRERR" != x ; then
257            echo "parsing email error" > tmp.$$
258            echo "mv $TEMPDIR/$tdir $locDir/$sdir returns error:" $RETVAL >> tmp.$$
259            echo -n "in dir: $TEMPDIR : " ; ls -l $TEMPDIR  >> tmp.$$
260            echo -n "in dir: $OUTDIR : " ; ls -l $locDir  >> tmp.$$
261            mail -s 'parse_emails err_5' $ADDRERR < tmp.$$
262            rm -f tmp.$$
263          fi
264          mv -f $INDIR"/"$file $INDIR"/../fail2process/"$file
265          continue
266        fi
267        chmod -R a+rx $locDir"/"$sdir > /dev/null 2>&1
268    
269      #  remove the original file      #  remove the original file
270      rm -f $INDIR"/"$file      rm -f $INDIR"/"$file
271    
272  done  done
273  echo "  done"  if test $PRT = 1 ; then echo "  done" ; fi
   
 # echo -n "gzipping all the \"output.txt\" files ..."  
 # (  
 #     cd $OUTDIR  
 #     outp=`find . -name output.txt`  
 #     if test "x$outp" != x ; then  
 #       gzip $outp  
 #     fi  
 # )  
 # echo "  done"  
   
 # echo -n "setting permissions to world-readable ..."  
 # chmod -R a+rx $OUTDIR > /dev/null 2>&1  
 # echo "  done"  
   
274    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.19

  ViewVC Help
Powered by ViewVC 1.1.22