Конфликтующие флаги типов в ack

Я добавил пользовательский тип в мой.ackrc, и он делает то, что я хочу.

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

Это соответствует файлам модульного теста. Так как я не хочу видеть тестовые использования чаще, чем я, я также установил

--notest

Однако, когда я хочу искать тесты, я пытаюсь добавить --test в командной строке, но я не получаю результатов. Я надеялся, что --test переписал бы --notest, но они объединяются, чтобы ничего не дать. Страница man подтверждает, что они ORed вместе.

Любые предложения для того, что я пытаюсь сделать?

1 ответ

Решение

Поскольку ack ведет себя как OR для всех выражений типа вместе, нет способа сделать это непосредственно в .ackrc без изменения подтверждения.

Тем не менее, я был в состоянии написать ack-функцию, которая добавляет --notest если --test передается.

function ack {
  test_flag='--notest'
  for arg in "$*"; do
    case "$arg" in
      --test)
        test_flag=''
        ;;
    esac
  done
  command ack "$*" $testflag
}
Другие вопросы по тегам