1

我查看了有关添加覆盖命令的 Origen 文档,除了 -d 之外没有看到任何禁止覆盖的 origen 命令。但是,当我尝试覆盖目标命令时,我没有看到 Origen 执行与执行命令时相同的操作。这是我设定目标时的期望:

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

当我对覆盖的命令执行相同操作时,目标不会改变。这是我覆盖的目标命令:

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 返回到 Origen 以完成目标命令,但似乎什么也没做。

谢谢

4

1 回答 1

1

当一个命令被发送时,当前应用程序首先尝试处理它,然后是它的插件,最后是 Origen 核心。

如果在此过程中的任何时候退出,那么这将完全结束 Origen 命令的执行,并且那些位于优先级链下游的人甚至永远不会看到该命令。

因此,如果您想完全覆盖命令以使原始实现永远不会受到影响,请exit 0在处理完之后调用。

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

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

于 2017-10-06T07:15:06.727 回答