#!/bin/sh
# the next line restarts using wish \
exec tclsh "$0"  ${1+"$@"}

# Création des librairie pour stead83
# 
# En cas de réorganisation de stead : mettre à jour la variable dirPats

proc main {} {

    set exe [file:normalName [info script] ]
    set stead_home [file dir [file dir $exe]]
    set stead_lib [set stead_home]/lib
    
    # # # La lib stead est spéciale donc traité à part.
    # # #   NON : PLUS MAINTENANT !
    # # cd $stead_lib/stead
    # # puts -nonewline "Rebuild index in stead ... "
    # # pkg_mkIndex -lazy . *.tcl
    # # puts "done"    
    
    
    # Pour chaque librairies de stead (pist et tcllib) , un fichier pkgIndex.tcl
    # est créé au niveau de tous les répertoires contenant la description
    # d'un packages
    
    # # set libraries {stead pist tcllib}
    set libraries {stead pist}
    
    foreach lib $libraries {
        cd [file join $stead_lib $lib]
        set packages [eval glob -nocomplain -type d $lib *]
        
        foreach pkg $packages {
            # si le répertoire est vide ... on ne sait jamais
            if { "x$packages" == "x" } {
                continue
            }
        
            cd [file join $stead_lib $lib $pkg]
            puts -nonewline "Rebuild package index in $lib/$pkg ... "
            
            # pkg_mkIndex plante si pas de fichier tcl dans le package :
            set cmd [list pkg_mkIndex -lazy . *.tcl [file join * *.tcl] ]
            if {[catch $cmd result]} {
                puts  "IMPOSSIBLE DE CREER LE PACKAGE : on passe !! "
                continue
            }
            puts "done"
          
        } ;# endforeach pkg
      
    }  ;# endforeach lib

    puts "\nDone"    
    
}


## file:normalName -- return normalized name of the parameter
# 
# Cette version nécessite wish8.0 (ou +)
# 
# Cette procédure fait l'impasse sur le bug d'autodémontage supposé 
# corrigé dans les version actuelles du syteme sunOS
# 
# name: file or directory, could be absolute or relative, and could 
#       contain link.
# 
# Historique :
#   31/08/01 (diam) : correction suite à réorganisation
# 
proc file:normalName {name} {
    
    
    # If the name is relative: one make it absolute
    if {[file pathtype $name] == "relative"} {
        set name [file join [pwd] $name]
    }

    global tcl_platform
    switch -exact -- $tcl_platform(platform) {
        macintosh  -
        windows   {
            return $name
        } 
    } 
    
    # One follows a possible link (which can be absolute or relative)
    while {[string match "link" [file type $name] ]} {
        set followName [file readlink $name]
        # If the name is relative: one make it absolute
        if {[file pathtype $followName] == "relative"} {
            # 
            set followName \
                [file join [ [file dirname $name] $followName] ]
        }
        set name $followName
    }
    
    # $name could be relative or absolute
    set pwd_ori [pwd]
    cd [file dirname $name]
    set theDir [pwd]
    
    set name [file join $theDir [file tail $name]]
    
    cd $pwd_ori
    return $name

} ;# endproc file:realName

main
# ./
