diff --git a/internal/format/config_test.go b/internal/format/config_test.go
index 56c0b439..81115b68 100644
--- a/internal/format/config_test.go
+++ b/internal/format/config_test.go
@@ -55,7 +55,7 @@ func TestConfig(t *testing.T) {
// nix
nix, ok := cfg.Formatters["nix"]
as.True(ok, "nix formatter not found")
- as.Equal("nixpkgs-fmt", nix.Command)
+ as.Equal("alejandra", nix.Command)
as.Nil(nix.Options)
as.Equal([]string{"*.nix"}, nix.Includes)
as.Equal([]string{"examples/nix/sources.nix"}, nix.Excludes)
@@ -72,7 +72,7 @@ func TestConfig(t *testing.T) {
prettier, ok := cfg.Formatters["prettier"]
as.True(ok, "prettier formatter not found")
as.Equal("prettier", prettier.Command)
- as.Equal([]string{"--write"}, prettier.Options)
+ as.Equal([]string{"--write", "--tab-width", "4"}, prettier.Options)
as.Equal([]string{
"*.css",
"*.html",
@@ -88,12 +88,12 @@ func TestConfig(t *testing.T) {
as.Equal([]string{"CHANGELOG.md"}, prettier.Excludes)
// rust
- // rust, ok := cfg.Formatters["rust"]
- // as.True(ok, "rust formatter not found")
- // as.Equal("rustfmt", rust.Command)
- // as.Equal([]string{"--edition", "2018"}, rust.Options)
- // as.Equal([]string{"*.rs"}, rust.Includes)
- // as.Nil(rust.Excludes)
+ rust, ok := cfg.Formatters["rust"]
+ as.True(ok, "rust formatter not found")
+ as.Equal("rustfmt", rust.Command)
+ as.Equal([]string{"--edition", "2018"}, rust.Options)
+ as.Equal([]string{"*.rs"}, rust.Includes)
+ as.Nil(rust.Excludes)
// shell
shell, ok := cfg.Formatters["shell"]
diff --git a/nix/devshell.nix b/nix/devshell.nix
index 391bd144..77fdcf9a 100644
--- a/nix/devshell.nix
+++ b/nix/devshell.nix
@@ -28,12 +28,11 @@
golangci-lint
# formatters for testing
-
+ alejandra
elmPackages.elm-format
haskellPackages.cabal-fmt
haskellPackages.ormolu
mdsh
- nixpkgs-fmt
nodePackages.prettier
python3.pkgs.black
rufo
diff --git a/nix/treefmt.nix b/nix/treefmt.nix
index ed6fc528..3d5aac6e 100644
--- a/nix/treefmt.nix
+++ b/nix/treefmt.nix
@@ -15,7 +15,21 @@
statix.enable = true;
};
- settings.formatter.prettier.options = ["--tab-width" "4"];
+ settings.formatter.prettier = {
+ options = ["--tab-width" "4"];
+ includes = [
+ "*.css"
+ "*.html"
+ "*.js"
+ "*.json"
+ "*.jsx"
+ "*.md"
+ "*.mdx"
+ "*.scss"
+ "*.ts"
+ "*.yaml"
+ ];
+ };
};
devshells.default = {
diff --git a/test/examples/elm/elm.json b/test/examples/elm/elm.json
index 2e540767..40afd3a2 100644
--- a/test/examples/elm/elm.json
+++ b/test/examples/elm/elm.json
@@ -1,22 +1,22 @@
{
- "type": "application",
- "source-directories": ["src"],
- "elm-version": "0.19.1",
- "dependencies": {
- "direct": {
- "elm/browser": "1.0.2",
- "elm/core": "1.0.5",
- "elm/html": "1.0.0"
+ "type": "application",
+ "source-directories": ["src"],
+ "elm-version": "0.19.1",
+ "dependencies": {
+ "direct": {
+ "elm/browser": "1.0.2",
+ "elm/core": "1.0.5",
+ "elm/html": "1.0.0"
+ },
+ "indirect": {
+ "elm/json": "1.1.3",
+ "elm/time": "1.0.0",
+ "elm/url": "1.0.0",
+ "elm/virtual-dom": "1.0.2"
+ }
},
- "indirect": {
- "elm/json": "1.1.3",
- "elm/time": "1.0.0",
- "elm/url": "1.0.0",
- "elm/virtual-dom": "1.0.2"
+ "test-dependencies": {
+ "direct": {},
+ "indirect": {}
}
- },
- "test-dependencies": {
- "direct": {},
- "indirect": {}
- }
}
diff --git a/test/examples/html/index.html b/test/examples/html/index.html
index 201633de..00993e16 100644
--- a/test/examples/html/index.html
+++ b/test/examples/html/index.html
@@ -1,10 +1,10 @@
-
-
- Title
-
-
- Hi!
-
+
+
+ Title
+
+
+ Hi!
+
diff --git a/test/examples/javascript/source/hello.js b/test/examples/javascript/source/hello.js
index 4d352ce2..574d4d46 100644
--- a/test/examples/javascript/source/hello.js
+++ b/test/examples/javascript/source/hello.js
@@ -1,65 +1,68 @@
const helloFactory = function ({ React }) {
- const { string, func } = React.PropTypes;
+ const { string, func } = React.PropTypes;
- return function Hello(props) {
- // React wants propTypes & defaultProps
- // to be static.
- Hello.propTypes = {
- word: string,
- mode: string,
+ return function Hello(props) {
+ // React wants propTypes & defaultProps
+ // to be static.
+ Hello.propTypes = {
+ word: string,
+ mode: string,
- actions: React.PropTypes.shape({
- setWord: func.isRequired,
- setMode: func.isRequired,
- }),
- };
+ actions: React.PropTypes.shape({
+ setWord: func.isRequired,
+ setMode: func.isRequired,
+ }),
+ };
- return {
- props, // set props
+ return {
+ props, // set props
- componentDidUpdate() {
- this.refs.wordInput.getDOMNode().focus();
- },
+ componentDidUpdate() {
+ this.refs.wordInput.getDOMNode().focus();
+ },
- render() {
- const { word, mode } = this.props;
+ render() {
+ const { word, mode } = this.props;
- const { setMode, setWord } = this.props.actions;
+ const { setMode, setWord } = this.props.actions;
- const styles = {
- displayMode: {
- display: mode === "display" ? "inline" : "none",
- },
+ const styles = {
+ displayMode: {
+ display: mode === "display" ? "inline" : "none",
+ },
- editMode: {
- display: mode === "edit" ? "inline" : "none",
- },
- };
+ editMode: {
+ display: mode === "edit" ? "inline" : "none",
+ },
+ };
- const onKeyUp = function (e) {
- if (e.key !== "Enter") return;
+ const onKeyUp = function (e) {
+ if (e.key !== "Enter") return;
- setWord(e.target.value);
- setMode("display");
- };
+ setWord(e.target.value);
+ setMode("display");
+ };
- return (
-
- Hello,
- setMode("edit")}>
- {word}!
-
-
-
- );
- },
+ return (
+
+ Hello,
+ setMode("edit")}
+ >
+ {word}!
+
+
+
+ );
+ },
+ };
};
- };
};
export default helloFactory;
diff --git a/test/examples/nix/sources.nix b/test/examples/nix/sources.nix
index dccca924..0ad4652d 100644
--- a/test/examples/nix/sources.nix
+++ b/test/examples/nix/sources.nix
@@ -3,52 +3,49 @@ let
#
# The fetchers. fetch_ fetches specs of type .
#
- fetch_file = pkgs: name: spec:
- let
- name' = sanitizeName name + "-src";
- in
+ fetch_file = pkgs: name: spec: let
+ name' = sanitizeName name + "-src";
+ in
if spec.builtin or true
then
builtins_fetchurl
- {
- inherit (spec) url sha256;
- name = name';
- }
+ {
+ inherit (spec) url sha256;
+ name = name';
+ }
else
pkgs.fetchurl {
inherit (spec) url sha256;
name = name';
};
- fetch_tarball = pkgs: name: spec:
- let
- name' = sanitizeName name + "-src";
- in
+ fetch_tarball = pkgs: name: spec: let
+ name' = sanitizeName name + "-src";
+ in
if spec.builtin or true
then
builtins_fetchTarball
- {
- name = name';
- inherit (spec) url sha256;
- }
+ {
+ name = name';
+ inherit (spec) url sha256;
+ }
else
pkgs.fetchzip {
name = name';
inherit (spec) url sha256;
};
- fetch_git = name: spec:
- let
- ref =
- spec.ref
- or (
- if spec ? branch
- then "refs/heads/${spec.branch}"
- else if spec ? tag
- then "refs/tags/${spec.tag}"
- else abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"
- );
- in
+ fetch_git = name: spec: let
+ ref =
+ spec.ref
+ or (
+ if spec ? branch
+ then "refs/heads/${spec.branch}"
+ else if spec ? tag
+ then "refs/tags/${spec.tag}"
+ else abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"
+ );
+ in
builtins.fetchGit {
url = spec.repo;
inherit (spec) rev;
@@ -59,12 +56,12 @@ let
fetch_builtin-tarball = name:
throw
- '' [${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
+ '' [${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
$ niv modify ${name} -a type=tarball -a builtin=true'';
fetch_builtin-url = name:
throw
- '' [${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
+ '' [${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
$ niv modify ${name} -a type=file -a builtin=true'';
#
@@ -74,34 +71,33 @@ let
# https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695
sanitizeName = name: (
concatMapStrings
- (s:
- if builtins.isList s
- then "-"
- else s)
- (
- builtins.split "[^[:alnum:]+._?=-]+"
- ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name)
- )
+ (s:
+ if builtins.isList s
+ then "-"
+ else s)
+ (
+ builtins.split "[^[:alnum:]+._?=-]+"
+ ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name)
+ )
);
# The set of packages used when specs are fetched using non-builtins.
- mkPkgs = sources: system:
- let
- sourcesNixpkgs =
- import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; };
- hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
- hasThisAsNixpkgsPath = == ./.;
- in
+ mkPkgs = sources: system: let
+ sourcesNixpkgs =
+ import (builtins_fetchTarball {inherit (sources.nixpkgs) url sha256;}) {inherit system;};
+ hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
+ hasThisAsNixpkgsPath = == ./.;
+ in
if builtins.hasAttr "nixpkgs" sources
then sourcesNixpkgs
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath
- then import { }
+ then import {}
else
abort
- ''
- Please specify either (through -I or NIX_PATH=nixpkgs=...) or
- add a package called "nixpkgs" to your sources.json.
- '';
+ ''
+ Please specify either (through -I or NIX_PATH=nixpkgs=...) or
+ add a package called "nixpkgs" to your sources.json.
+ '';
# The actual fetching function.
fetch = pkgs: name: spec:
@@ -123,22 +119,21 @@ let
# If the environment variable NIV_OVERRIDE_${name} is set, then use
# the path directly as opposed to the fetched source.
- replace = name: drv:
- let
- saneName =
- stringAsChars
- (c:
- if ((builtins.match "[a-zA-Z0-9]" c) == null)
- then "_"
- else c)
- name;
- ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
- in
+ replace = name: drv: let
+ saneName =
+ stringAsChars
+ (c:
+ if ((builtins.match "[a-zA-Z0-9]" c) == null)
+ then "_"
+ else c)
+ name;
+ ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
+ in
if ersatz == ""
then drv
else
- # this turns the string into an actual Nix path (for both absolute and
- # relative paths)
+ # this turns the string into an actual Nix path (for both absolute and
+ # relative paths)
if builtins.substring 0 1 ersatz == "/"
then /. + ersatz
else /. + builtins.getEnv "PWD" + "/${ersatz}";
@@ -148,21 +143,21 @@ let
# a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs =
builtins.mapAttrs
- or (
+ or (
f: set:
with builtins;
- listToAttrs (map
- (attr: {
- name = attr;
- value = f attr set.${attr};
- })
- (attrNames set))
+ listToAttrs (map
+ (attr: {
+ name = attr;
+ value = f attr set.${attr};
+ })
+ (attrNames set))
);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
range = first: last:
if first > last
- then [ ]
+ then []
else builtins.genList (n: first + n) (last - first + 1);
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
@@ -177,66 +172,61 @@ let
optionalAttrs = cond: as:
if cond
then as
- else { };
+ else {};
# fetchTarball version that is compatible between all the versions of Nix
- builtins_fetchTarball =
- { url
- , name ? null
- , sha256
- ,
- } @ attrs:
- let
- inherit (builtins) lessThan nixVersion fetchTarball;
- in
+ builtins_fetchTarball = {
+ url,
+ name ? null,
+ } @ attrs: let
+ inherit (builtins) lessThan nixVersion fetchTarball;
+ in
if lessThan nixVersion "1.12"
- then fetchTarball ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
+ then fetchTarball ({inherit url;} // (optionalAttrs (name != null) {inherit name;}))
else fetchTarball attrs;
# fetchurl version that is compatible between all the versions of Nix
- builtins_fetchurl =
- { url
- , name ? null
- , sha256
- ,
- } @ attrs:
- let
- inherit (builtins) lessThan nixVersion fetchurl;
- in
+ builtins_fetchurl = {
+ url,
+ name ? null,
+ } @ attrs: let
+ inherit (builtins) lessThan nixVersion fetchurl;
+ in
if lessThan nixVersion "1.12"
- then fetchurl ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
+ then fetchurl ({inherit url;} // (optionalAttrs (name != null) {inherit name;}))
else fetchurl attrs;
# Create the final "sources" from the config
mkSources = config:
mapAttrs
- (
- name: spec:
- if builtins.hasAttr "outPath" spec
- then
- abort
- "The values in sources.json should not have an 'outPath' attribute"
- else spec // { outPath = replace name (fetch config.pkgs name spec); }
- )
- config.sources;
+ (
+ name: spec:
+ if builtins.hasAttr "outPath" spec
+ then
+ abort
+ "The values in sources.json should not have an 'outPath' attribute"
+ else spec // {outPath = replace name (fetch config.pkgs name spec);}
+ )
+ config.sources;
# The "config" used by the fetchers
- mkConfig =
- { sourcesFile ? if builtins.pathExists ./sources.json
+ mkConfig = {
+ sourcesFile ?
+ if builtins.pathExists ./sources.json
then ./sources.json
- else null
- , sources ? if (sourcesFile == null)
- then { }
- else builtins.fromJSON (builtins.readFile sourcesFile)
- , system ? builtins.currentSystem
- , pkgs ? mkPkgs sources system
- ,
- }: rec {
- # The sources, i.e. the attribute set of spec name to spec
- inherit sources;
-
- # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
- inherit pkgs;
- };
+ else null,
+ sources ?
+ if (sourcesFile == null)
+ then {}
+ else builtins.fromJSON (builtins.readFile sourcesFile),
+ system ? builtins.currentSystem,
+ pkgs ? mkPkgs sources system,
+ }: rec {
+ # The sources, i.e. the attribute set of spec name to spec
+ inherit sources;
+
+ # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
+ inherit pkgs;
+ };
in
-mkSources (mkConfig { }) // { __functor = _: settings: mkSources (mkConfig settings); }
+ mkSources (mkConfig {}) // {__functor = _: settings: mkSources (mkConfig settings);}
diff --git a/test/treefmt.toml b/test/treefmt.toml
index f5ac8aa9..04a778d6 100644
--- a/test/treefmt.toml
+++ b/test/treefmt.toml
@@ -27,7 +27,7 @@ includes = ["*.hs"]
excludes = ["examples/haskell/"]
[formatter.nix]
-command = "nixpkgs-fmt"
+command = "alejandra"
includes = ["*.nix"]
# Act as an example on how to exclude specific files
excludes = ["examples/nix/sources.nix"]
@@ -39,7 +39,7 @@ includes = ["*.rb"]
[formatter.prettier]
command = "prettier"
-options = ["--write"]
+options = ["--write", "--tab-width", "4"]
includes = [
"*.css",
"*.html",