[published] cabal-fmt

https://haskell.e-bigmoon.com/posts/2019/10-07-cabal-fmt.html

MEMO

  • cabal ファイルのフォーマットが可能

  • -i オプションで整形結果を上書きできる

  • フォルダを指定して自動でモジュールを expand できる

  • 色々ソートする

  • そのうち cabal-install のフォーマット機能としてマージするかもしれない

インストール

λ cabal update
λ cabal install cabal-fmt

λ cabal-fmt --version
0.1.1.1

λ cabal-fmt --help
cabal-fmt - .cabal file reformatter

Usage: cabal-fmt [-i|--inplace] [--Werror | --Wno-error | --indent N | --tabular
                 | --no-tabular] [FILE...] [--version]
  Reformat .cabal files

Available options:
  -i,--inplace             process files in-place
  --Werror                 Treat warnings as errors
  --indent N               Indentation
  --tabular                Tabular formatting
  FILE...                  input files
  -h,--help                Show this help text
  --version                Show version

使い方

基本形
λ cabal-fmt <proj>.cabal -i

モジュールの自動展開

cabal
library
  -- cabal-fmt: expand src
  exposed-modules:

こんな感じで指定すれば src 以下のディレクトリのモジュールが全て列挙される。exposed-modules 以外にも、other-modules でも同様に以下のように書くこともできる。

cabal
library
  -- cabal-fmt: expand src
  other-modules:

この場合、other-modules に全て列挙される。

そのため、公開したいモジュールと非公開のモジュールのディレクトリを別々に分けておくと良い。

expand の複数指定

cabal
library
  -- cabal-fmt: expand src
  -- cabal-fmt: expand app
  exposed-modules:

こんな感じで複数行書けば良い

モジュールの除外設定

cabal
library
  -- cabal-fmt: expand test/tasty -Driver
  other-modules:
  • テストコンポーネントなどで、除外したいモジュールがある場合は -Module で除外できる

揃え

  • デフォルトでは整形結果は綺麗に揃っている

  • --no-tabular オプションを指定すると、解除される

参考リソース

Last updated