set comment {
===============================================================================

   Navn          : Peter Laulund, KMS

   Oprettet dato : 30 marts 2005 - Version 2.0

   Beskrivelse   : Rutine til at zippe et bibliotek til brug for ldsexport

                   hvordan styres det hvor data placeres ?
                    - det skal afhænge af om det er via lds eller på en lokal
                      maskine
                    - hvordan med at få pasords/krypteret beskyttet data ?
                      kan være nødvendigt hvis data skal transporteres via
                      internettet.
                    -> kan medøfre at der ska bruges et andet program
                    - navnet på zipfilen skal være være en del af parametrene
                      da det ikke nødvendigvis er lig med biblioteksnavn
                      der kan også være brug for at inkludre brugernavnet
                      som end del af det


===============================================================================}

# =============================================================================
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

set pathLst {
 set gsPath2App   [regsub -all -- {\\} $env(LDS_HOME) {/} ] ;
 set gsPath2MyFme [regsub -all -- {\\} $env(MY_FME) {/}]    ;
 set gsPath2Data  [regsub -all -- {\\} $env(LDS_DATA) {/} ] ;
 set gsPath2Temp  [regsub -all -- {\\} $env(FME_TEMP) {/} ] ;
} ; #
eval $pathLst ; unset pathLst

# =============================================================================
namespace eval zip {
namespace export runZip

proc runZip {root dir zipName {drop 1}} {

     set zipProg [regsub -all -- {\\} $::env(LDS_HOME) {/} ]/util/zip.exe

     if {![file exists $root/$dir] } {
         print2Log "ZIP ERROR: Dir '$root/$dir' findes ikke, afbryder!"
         return 1
     }

     set path2Zip [ file dirname $zipName ]
     if {![file exists $path2Zip]} {file mkdir $path2Zip}

     if { [ file exists $zipName ] } {file delete -force -- $zipName}

     set worDir [pwd] ; cd $root
     switch -- [ catch { exec $zipProg -rq $zipName $dir/* } msg ] {
         0 { print2Log "ZIP OK: $root/$dir zippet til -> $zipName"
             cd $worDir
             if { $drop } { catch { file delete -force -- ${root}/${dir} }}
           }
         1 { print2Log "ZIP ERROR: Kunne ikke zippe $data \n$msg"
             cd $worDir
           }
     }
     return 0
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#bruges af pm skal skrives sammen med ovenstående - dublet
proc ZipData {data zipName {drop 1}} {
     global gsPath2App gsPath2Data gsPath2Temp

     set zipFrom 103004 ;# format lig mmddyy
     set zipProg $gsPath2App/util/zip.exe
     delFile $zipName

     puts "--> $data" ; puts "--> $zipName"
     set worDir [pwd]
     cd $gsPath2Data
     puts  $zipFrom
     switch -- [ catch { exec $zipProg -rq -t $zipFrom $zipName $data/* } ] {
         0 { #write2log "ZIP: $data zippet til -> $zipName"
             cd $worDir
             if { $drop } { catch { file delete -force -- ${gsPath2Data}/${data} } }
           }
         1 { #write2log "ZIP ERROR: Kunne ikke zippe $data"
             cd $worDir
           }
     }
}

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
proc print2Log {msg {flag 1}} {

     set zipLogFile $::gsPath2MyFme/Log/zippet.log
     set ts [ clock format [clock seconds] -format %Y%m%d-%H:%M:%S ]

     if {[ string trim $msg ] == {} } { return 1 }
     if $flag {puts $msg}
     puts [set fOut [open $zipLogFile a ]] "$ts $msg" ; close $fOut
     return 0

}
} ;# End namespace
namespace import zip::*Zip

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# =============================================================================
