Распечатка исходной иерархии с большим проектом TCL - PullRequest
3 голосов
/ 20 сентября 2011

Так что я работаю с большим проектом TCL и подумал, что было бы здорово построить древовидную структуру того, как файлы были источником в проекте.Я изменил исходную команду, сделав следующее:

rename ::source ::real_source

proc ::source args {
    set file_handle [open "file_source.tcl" a]
    puts $file_handle $args
    puts $file_handle $argv0
    close $file_handle
    uplevel 1 ::real_source $args
}

, которая работает и сохраняет все исходные файлы, но мне было интересно, есть ли у кого-нибудь идеи о том, как я могу определить, какие файлы вызывают исходную команду?

Другая интересная проблема, с которой я сталкиваюсь, заключается в том, что моя новая процедура с исходным кодом работает только в некоторых файлах.Исходники из файла A Файл B и все источники в файле B, кажется, работают правильно, но все, что под этим, похоже, возвращается к использованию старой процедуры источника.Любые идеи о том, почему это происходит?

1 Ответ

4 голосов
/ 20 сентября 2011

[info script] даст вам имя вызывающего файла source

Пример:

a.tcl

rename ::source ::real_source
proc ::source args {
    puts "[info script] sources $args"
    uplevel 1 ::real_source $args
}
source b.tcl

b.tcl

puts "in file b"
source c.tcl

c.tcl

puts "in file c"

выходы * * 1016

a.tcl sources b.tcl
in file b
b.tcl sources c.tcl
in file c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...