#!/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]]

    
    # Ces patternes sont relatives au répertoire prinipal de stead !!!
    # 
    set dirsPats { lib/* }
    
    # on ne garde que les répertoires contenant des fichiers tcl, 
    # mais PAS le répertoire "modes"
    cd $stead_home
    set dirs [eval glob -nocomplain  $dirsPats]
    set libs [list]
    foreach dir $dirs {
        # on ignore si c'est pas un répertoire
        if {![file isdir $dir]} {
            continue
        }
        # on ignore si le (les) répertoire(s) de modes qui sont 
        # sourcés (IMPORTANT !)
        if {"x[file tail $dir]" == "xmodes"} {
            continue
        }
        # on ignore si ne contient pas de fichier tcl (i.e. images, ...)
        if { ![llength [glob -nocomplain $dir/*tcl] ] } {
            continue
        }
        lappend libs $dir
    } ;# endforeach
    puts "libs=$libs"
    if {![llength $libs]} {
        puts "Aucune librairie contenant des fichiers tcl dans \n   $dirsPats"
        exit 1
    }
    
    # On va créer les fichiers d'index
    foreach lib $libs  {
        
        puts -nonewline "Rebuild index in $lib ... "
        cd $stead_home/$lib
        auto_mkindex  .  *.tcl
        puts done
        # Il faut revenir au répertoire initial car les patternes sont relatives !
    
    } ;# endforeach
}


## 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.
# 
# 
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
# ./




