Как заставить стек запускать дополнительные команды при сборке пакета haskell?

Я сделал скрипт для компиляции моих программ на Haskell (пока что это были простые скрипты, состоящие из одного исходного файла), который перед вызовом ghc содержал следующие строки:

echo "Running hlint"
hlint ${1}
echo "Running scan"
~/.cabal/bin/scan -j False ${1}
echo "Running doctest"
~/.cabal/bin/doctest ${1}

(${1} относится к одному исходному файлу .hs.)

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

Я хотел бы настроить некоторую глобальную конфигурацию, чтобы эти команды автоматически запускались в исходном коде при вызове stack build в любом из моих проектов.


person bli    schedule 03.10.2016    source источник


Ответы (1)


Стек предоставляет флаг --exec, который позволяет вам это сделать. См. полный пример в 'Flags', но мы можем увидеть и команда типа:

$ stack build --test --exec "echo Hi!"

Где --exec означает «делать другие вещи», а --test запускает тесты.

Что касается вашего примера, это может выглядеть так:

stack build \
  --exec "hlint foo" \
  --exec "~/.cabal/bin/scan -j False bar"
  --exec "~/.cabal/bin/doctest baz"
person Community    schedule 03.10.2016