forked from epics_driver_modules/require
63 lines
1.6 KiB
Tcl
Executable File
63 lines
1.6 KiB
Tcl
Executable File
#!/usr/bin/tclsh
|
|
|
|
package require Tclx
|
|
|
|
set dir [lindex $argv 0]
|
|
set ext [lindex $argv 1]
|
|
set names [lrange $argv 2 end]
|
|
if {![file isdirectory $dir]} exit
|
|
|
|
if {[lindex [file split $dir] 1] == "prod"} {
|
|
proc mklink {target link} {
|
|
global dir
|
|
puts "Linking $link -> $target"
|
|
puts "repository -H pc770 slink $target $dir/$link"
|
|
}
|
|
proc rmlink {link} {
|
|
}
|
|
} else {
|
|
proc mklink {target link} {
|
|
puts "Linking $link -> $target"
|
|
link -sym $target $link
|
|
}
|
|
proc rmlink {link} {
|
|
puts "removing link $link"
|
|
file delete $link
|
|
}
|
|
}
|
|
|
|
cd $dir
|
|
foreach name $names {
|
|
set links [glob -nocomplain -type l $name-*$ext]
|
|
lappend links $name$ext
|
|
foreach file $links {
|
|
rmlink $file
|
|
}
|
|
set files [glob -nocomplain -types f $name-*$ext]
|
|
set files [lsort -decreasing -dictionary $files]
|
|
set oldmajor ""
|
|
set oldminor ""
|
|
set first 1
|
|
foreach file $files {
|
|
if {[regexp {(.*)-([0-9]+)\.([0-9]+)\.([0-9]+)(.*)} $file \
|
|
match head major minor patch tail] && \
|
|
$head == $name && $tail == $ext} {
|
|
if {$first} {
|
|
mklink $file $name$ext
|
|
set first 0
|
|
}
|
|
if {$major != $oldmajor} {
|
|
mklink $file $name-$major$ext
|
|
set oldmajor $major
|
|
set oldminor ""
|
|
}
|
|
if {$minor != $oldminor} {
|
|
mklink $file $name-$major.$minor$ext
|
|
set oldminor $minor
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# $Header: /cvs/G/DRV/misc/App/tools/setLinks.tcl,v 1.3 2012/09/27 08:30:42 zimoch Exp $
|