#!/bin/sh  
# \
exec oagtclsh "$0" "$@"

set auto_path [linsert $auto_path 0  /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0 /usr/local/oag/lib_patch/$env(HOST_ARCH)]
APSStandardSetup
APSDefineMonitoringVariables

set args $argv
set configFile ""
set dryRun 0
if {[APSStrictParseArguments {configFile dryRun}]==-1 || \
      ![string length $configFile] || ![file exists $configFile] || \
      [catch {sdds open $configFile r} cFID]} {
    APSSendEMail \
      -address $apsDataManagerNormalEmail -message "Bad commandline arguments: $argv0 $args"
    exit 1
}

foreach column {ageLimit directory filter} {
    if {[catch {APSGetSDDSColumn -sddsFD $cFID \
                  -column $column} ${column}List]} {
        APSSendEMail \
          -address $apsDataManagerNormalEmail -message "removeOldDataFiles: [set ${column}List]"
    }
}

set timeNow [expr int([exec timeconvert -now | token -last])]

set index -1
set messageList ""
foreach directory $directoryList {
    incr index
    set filter [lindex $filterList $index]
    set ageLimit [lindex $ageLimitList $index]
    set timeForDeath [expr $timeNow-$ageLimit*3600*24]

    if [catch {cd $directory} result] {
        APSSendEMail \
          -address $apsDataManagerNormalEmail -message "removeOldDataFiles: $result"
        continue
    }
    set deleteList ""
    foreach filename [eval glob -nocomplain $filter] {
        set modTime [file mtime $filename]
        if [expr $modTime<$timeForDeath] {
            lappend deleteList $filename
        }
    }
    set nfiles [llength $deleteList]
    if $nfiles {
        if !$dryRun {
            set i 0
            while {$i < $nfiles} {
                set delList [lrange $deleteList $i [expr {$i + 200}]]
                incr i 200
                if [catch {eval exec rm -rf $delList} result] {
                    lappend messageList "Error in removeOldDataFiles for $directory: $result"
                } else {
                    #lappend messageList "[llength $delList] files removed in $directory"
                }
            }
        } else {
            puts stderr "$directory $filter : [llength $deleteList]"
        }
    }
}
if [llength $messageList] {
     APSSendEMail \
       -address $apsDataManagerNormalEmail -message "[join $messageList \n]"
}
