2017-10-05 96 views
1

我看了一下关于addingoverriding命令的Origen文档,除了-d被禁止重写之外,没有看到任何origen命令。但是,当我尝试覆盖目标命令时,我没有看到Origen执行与执行命令时的操作相同的操作。以下是我想到当我设定一个目标:如何补充Origen命令的功能?

peologin02:ppekit $ origen t mytarget.rb 
Target now set to: mytarget.rb 

当我做同样的我overidden命令,目标不会改变。这是我的目标重写命令:

when /target|^t$/ 
    unless ARGV.empty? 
    curr_target = Origen.target.name 
    new_target = ARGV.first 
    unless curr_target == new_target 
     # Remove the old target product's symlinks 
     rm_src_links 
    end 
    end 
    exit 0 

我想到了“退出0”的代码将确保ARGV被返回到奥利完成目标的命令,但好像什么都不做。

THX

回答

1

当命令被分派,当前的应用程序获得的第一个裂缝在试图处理它,其次是它的插件,然后最终奥利核心。

如果在进程退出的任何时候,那么这将完全结束Origen命令的执行,而那些在优先级链下面的命令永远不会看到该命令。

因此,如果您希望完全覆盖该命令,以便永远不会执行原始实现,那么在处理它之后请致电exit 0

如果你只是想补充现有的行为,那么不要调用exit并且执行将继续到下一行。

换句话说,在上面的例子中删除exit 0,它应该做你想做的。