fullstack-development / haskell-starter-kit

Starter Kit for web-backend apps written with Haskell, Servant, Docker and PostgreSQL
BSD 3-Clause "New" or "Revised" License
1 stars 1 forks source link

Reformat all code with ormolu #19

Closed antonkalinin-ml closed 3 years ago

antonkalinin-ml commented 3 years ago

Отформатировал все исходники и сделал команду make style для использования правильного форматтера. Версия форматтера зафиксирована, от предустановленного форматтера мы не зависим - он поставится при необходимости в правильной версии, ничего нигде не затрет.

antonkalinin-ml commented 3 years ago

Выяснил, что разные версии ormolu форматируют по-разному, и этот патч надо переделывать или закрывать.

Есть быстрый способ настройки CI для проверки кодстайла при помощи ormolu, но непонятно, какую версию он использует и как ее заморозить.

Если на разных проектах используются разные версии ormolu, то stack install для установки ormolu не подойдет, нужно делать что-то типа stack build ormolu; stack exec ormolu -- <параметры>. Надо поэкспериментировать.

Znack commented 3 years ago

Ну я думаю, что пока что можно договориться, что используем ту версию ormolu, которая у нас в текущем снэпшоте стэка есть. То есть надо устанавливать из папки проекта stack install ormolu, то должно быть норм. Там причем вроде можно чтобы бинари копировались под разными именами в ~/.local/bin и в редакторе разных проектов просто выбирать эти бинари нужные.

antonkalinin-ml commented 3 years ago

Собственно, 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
antonkalinin-ml commented 3 years ago

Можно еще круче:

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
Znack commented 3 years ago

О, выглядит отлично :)