Closed antonkalinin-ml closed 3 years ago
Выяснил, что разные версии ormolu форматируют по-разному, и этот патч надо переделывать или закрывать.
Есть быстрый способ настройки CI для проверки кодстайла при помощи ormolu, но непонятно, какую версию он использует и как ее заморозить.
Если на разных проектах используются разные версии ormolu, то stack install для установки ormolu не подойдет, нужно делать что-то типа stack build ormolu; stack exec ormolu -- <параметры>. Надо поэкспериментировать.
Ну я думаю, что пока что можно договориться, что используем ту версию ormolu, которая у нас в текущем снэпшоте стэка есть. То есть надо устанавливать из папки проекта stack install ormolu
, то должно быть норм. Там причем вроде можно чтобы бинари копировались под разными именами в ~/.local/bin
и в редакторе разных проектов просто выбирать эти бинари нужные.
Собственно, stack install
= stack build --copy-bins
, в точности как сборка, только с копированием в каталог бинарей.
Потестировал в двух проектах с разным снапшотом:
stack build ormolu
stack exec ormolu -- -v
Работает, выдает разные версии :). Именно те, которые указаны в стекедже как текущие версии ormolu в данном снапшоте. Только stack exec вносит задержку в полсекунды - видимо, ищет по куче каталогов. Было бы здорово выяснить путь бинаря, но пока и так сойдет.
/home/kav/.stack/snapshots/x86_64-linux-tinfo6/df64724865ee8737de1feabe2957987db554d13a729c81236e5cd0758c408f32/8.8.3/bin/ormolu
/home/kav/.stack/snapshots/x86_64-linux-tinfo6/63ecd619d068f664ebeaf792e6fc349bab4e9720fd0920599e46393599b4694d/8.10.4/bin/ormolu
Можно еще круче:
kav@revontulet:~/s/haskell-starter-kit$ stack exec --package ormolu-0.1.2.0 which ormolu
/home/kav/.stack/snapshots/x86_64-linux-tinfo6/bee7cbac30eb10d4d9a9b85e0e1e3ae7fb8ab75c48a841364a22f6fc1db7d35d/8.10.4/bin/ormolu
О, выглядит отлично :)
Отформатировал все исходники и сделал команду
make style
для использования правильного форматтера. Версия форматтера зафиксирована, от предустановленного форматтера мы не зависим - он поставится при необходимости в правильной версии, ничего нигде не затрет.