确认中的类型标志冲突

确认中的类型标志冲突

我已经向我的 .ackrc 添加了一个自定义类型,它正好满足我的要求。

--type-set=test:match:/_test\b/

它匹配单元测试文件。由于我不想经常看到测试用法,因此我还设置了

--notest

但是,当我想搜索测试时,我尝试--test在命令行中添加,但没有得到任何结果。我希望这--test会覆盖--notest,但它们结合起来什么也没有。手册页确认它们是 OR 在一起的。

对于我想做的事情有什么建议吗?

答案1

由于 ack 的行为是将所有类型表达式进行“或”运算,因此无法在.ackrc不改变 ack 的情况下直接执行此操作。

但是,我可以编写一个 bash 函数来包装 ack,以添加--notest除非--test传递。

function ack {
  test_flag='--notest'
  for arg in "$*"; do
    case "$arg" in
      --test)
        test_flag=''
        ;;
    esac
  done
  command ack "$*" $testflag
}

相关内容