feat(tools/depotfmt): add a treefmt wrapper with depot configuration
Right now the only included formatter is gofmt, but we will extend this over time. The version of treefmt is bumped to 0.3.0 (which supports custom config files) until this lands in nixpkgs. Change-Id: I1e1aafd05ec7427c616f90c90490c528ecb2615c Reviewed-on: https://cl.tvl.fyi/c/depot/+/4399 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
This commit is contained in:
parent
3090f61713
commit
d018484376
4 changed files with 37 additions and 0 deletions
|
@ -58,6 +58,9 @@ case "${TARGET_TOOL}" in
|
||||||
stern)
|
stern)
|
||||||
attr="third_party.nixpkgs.stern"
|
attr="third_party.nixpkgs.stern"
|
||||||
;;
|
;;
|
||||||
|
depotfmt)
|
||||||
|
attr="tools.depotfmt"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "The tool '${TARGET_TOOL}' is currently not installed in this repository."
|
echo "The tool '${TARGET_TOOL}' is currently not installed in this repository."
|
||||||
exit 1
|
exit 1
|
||||||
|
|
1
bin/depotfmt
Symbolic link
1
bin/depotfmt
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
__dispatch.sh
|
17
third_party/overlays/tvl.nix
vendored
17
third_party/overlays/tvl.nix
vendored
|
@ -59,4 +59,21 @@ self: super: {
|
||||||
mkShell = super.lib.makeOverridable(args: (super.mkShell args) // {
|
mkShell = super.lib.makeOverridable(args: (super.mkShell args) // {
|
||||||
meta.ci = false;
|
meta.ci = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
# bump treefmt to a newer version that includes our config file patch
|
||||||
|
treefmt = super.treefmt.overrideAttrs(drv: rec {
|
||||||
|
version = "0.3.0";
|
||||||
|
|
||||||
|
src = super.fetchFromGitHub {
|
||||||
|
owner = "numtide";
|
||||||
|
repo = "treefmt";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "0jnfak6wmqpqwymja9bsw54al50yqzdy7lxfx66rqamqsvngqd1x";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoDeps = drv.cargoDeps.overrideAttrs(_: {
|
||||||
|
inherit src;
|
||||||
|
outputHash = "19p15gavcjldn1di7yyn80ys6rj4ajaprqk8x34vxslr4y2qychf";
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
16
tools/depotfmt.nix
Normal file
16
tools/depotfmt.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# Builds treefmt for depot, with a hardcoded configuration that
|
||||||
|
# includes the right paths to formatters.
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
config = pkgs.writeText "depot-treefmt-config" ''
|
||||||
|
[formatter.go]
|
||||||
|
command = "${pkgs.go}/bin/gofmt"
|
||||||
|
options = [ "-w" ]
|
||||||
|
includes = ["*.go"]
|
||||||
|
'';
|
||||||
|
in pkgs.writeShellScriptBin "depotfmt" ''
|
||||||
|
exec ${pkgs.treefmt}/bin/treefmt ''${@} \
|
||||||
|
--config-file ${config} \
|
||||||
|
--tree-root $(${pkgs.git}/bin/git rev-parse --show-toplevel)
|
||||||
|
''
|
Loading…
Reference in a new issue