# One CLI to format the code tree - https://git.numtide.com/numtide/treefmt [formatter.python] command = "black" includes = ["*.py"] [formatter.elm] command = "elm-format" options = ["--yes"] includes = ["*.elm"] [formatter.go] command = "gofmt" options = ["-w"] includes = ["*.go"] [formatter.haskell] command = "ormolu" options = [ "--ghc-opt", "-XBangPatterns", "--ghc-opt", "-XPatternSynonyms", "--ghc-opt", "-XTypeApplications", "--mode", "inplace", "--check-idempotence", ] includes = ["*.hs"] excludes = ["examples/haskell/"] [formatter.alejandra] command = "alejandra" includes = ["*.nix"] # Act as an example on how to exclude specific files excludes = ["examples/nix/sources.nix"] pipeline = "nix" priority = 1 [formatter.deadnix] command = "deadnix" includes = ["*.nix"] pipeline = "nix" priority = 2 [formatter.ruby] command = "rufo" options = ["-x"] includes = ["*.rb"] [formatter.prettier] command = "prettier" options = ["--write", "--tab-width", "4"] includes = [ "*.css", "*.html", "*.js", "*.json", "*.jsx", "*.md", "*.mdx", "*.scss", "*.ts", "*.yaml", ] excludes = ["CHANGELOG.md"] [formatter.rust] command = "rustfmt" options = ["--edition", "2018"] includes = ["*.rs"] [formatter.shell] command = "/bin/sh" options = [ "-euc", """ # First lint all the scripts shellcheck "$@" # Then format them shfmt -i 2 -s -w "$@" """, "--", # bash swallows the second argument when using -c ] includes = ["*.sh"] [formatter.terraform] # Careful, only terraform 1.3.0 or later accept a list of files. # see https://github.com/numtide/treefmt/issues/97 command = "terraform" options = ["fmt"] includes = ["*.tf"] [formatter.foo-fmt] command = "foo-fmt"