##
## Compiler2 - PkgLib - Del
##
## (C) IPN - Ingenieurbuero fuer Praezisionsnumerik
##
## Dipl.-Ing. Andreas Otto
## Ulmenstrasse 3
## D-34289 Zierenberg
## mailto:aotto@t-online.de
## http://tclcompiler.sourceforge.net
##
## Alle Rechte vorbehalten
##
package require StdLib
package require FileLib
namespace eval ::PkgLib::Del {
variable PKG {NOT SET}
namespace import ::PkgLib::Db::*
}
proc ::PkgLib::Del::Msg { Str } {
puts stdout "\nPKG DEL MSG: $Str"
}
proc ::PkgLib::Del::ErrorN { args } {
lappend args {please check your environment}
variable PKG
::StdLib::ErrorN [ list PKG DEL $PKG ] $args
}
##
##-------------------------------------------------------------
## Pfade
##
proc ::PkgLib::Del::Item { HOME List } {
foreach { Typ Tgt } $List break
if {![ info exists Typ ]} return
if {[ string equal [ file pathtype $Tgt ] {relative} ]} {
set Tgt [ file join $HOME $Tgt ]
}
switch -exact $Typ {
l -
f {
file delete -force $Tgt
}
d {
set L [ glob -directory $Tgt -nocomplain .* * ]
if {[ llength $L ] <= 2} { file delete -force -- $Tgt }
}
}
}
proc ::PkgLib::Del::Remove { INSTDIR } {
##
Msg "read file database"
##
set Data [ ::PkgLib::Db::Read-FILE_LIST $INSTDIR ]
set HOME [ ::PkgLib::COMPILER_HOME ]
##
Msg "scan file database"
##
foreach List $Data { Item $HOME $List }
}
##
##-------------------------------------------------------------
## Main
##
proc ::PkgLib::Del::Main { pKG { FORCE no } } {
variable PKG [ ResolvDbName $pKG ]
if {!$FORCE && [ DbTOK $PKG Force ]} {
ErrorN "can't \"--del\" package \"$PKG\" because it have to be available" \
"please use \"--upd\" to upgrade to a new release"
}
set BUILDDIR [ ::PkgLib::BUILDDIR $PKG ]
set INSTDIR [ ::PkgLib::INSTDIR $PKG ]
Remove $INSTDIR
if {!$FORCE && ![::Question::YesNo "should package \"$PKG\" be deleted ?"]} return
##
Msg "delete directory"
##
DelIfExist $BUILDDIR
DelIfExist $INSTDIR
DelIfExist [ file join [ file dirname $INSTDIR ] .$PKG ]
## get the DB
::PkgLib::External $PKG D
::PkgLib::Index $PKG
::PkgLib::SysIndex $PKG
::PkgLib::CctCfg $PKG
::PkgLib::CgiCfg $PKG
::PkgLib::Db::Del $PKG
package require IView
::IView::DocDel $PKG [::Env::Get DIR]
}