feat(checks): Add linters
This commit is contained in:
parent
fc991a0b07
commit
5c6b697e55
3 changed files with 92 additions and 1 deletions
52
checks/default.nix
Normal file
52
checks/default.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
deploy-rs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
|
||||||
|
runNuCheck =
|
||||||
|
{
|
||||||
|
name,
|
||||||
|
packages,
|
||||||
|
check,
|
||||||
|
}:
|
||||||
|
pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
inherit name;
|
||||||
|
|
||||||
|
src = nixpkgs.lib.cleanSourceWith {
|
||||||
|
src = self;
|
||||||
|
filter = nixpkgs.lib.cleanSourceFilter;
|
||||||
|
};
|
||||||
|
|
||||||
|
dontPatch = true;
|
||||||
|
dontConfigure = true;
|
||||||
|
dontBuild = true;
|
||||||
|
dontInstall = true;
|
||||||
|
dontFixup = true;
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
checkInputs = nixpkgs.lib.singleton pkgs.nushell ++ packages;
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
nu ${check}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in
|
||||||
|
nixpkgs.lib.recursiveUpdate {
|
||||||
|
lints = runNuCheck {
|
||||||
|
name = "lints";
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
pkgs.deadnix
|
||||||
|
pkgs.nixfmt-rfc-style
|
||||||
|
pkgs.shellcheck
|
||||||
|
pkgs.statix
|
||||||
|
];
|
||||||
|
|
||||||
|
check = ./lints.nu;
|
||||||
|
};
|
||||||
|
} (deploy-rs.lib.${system}.deployChecks self.deploy)
|
39
checks/lints.nu
Normal file
39
checks/lints.nu
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
|
||||||
|
let shell_files = ls **/*.sh | get name
|
||||||
|
let nix_files = ls **/*.nix | where name !~ "hardware-configuration.nix|_sources" | get name
|
||||||
|
|
||||||
|
let linters = [
|
||||||
|
([shellcheck] ++ $shell_files)
|
||||||
|
([nixfmt --check --strict] ++ $nix_files)
|
||||||
|
([deadnix --fail] ++ $nix_files)
|
||||||
|
([statix check] ++ $nix_files)
|
||||||
|
]
|
||||||
|
|
||||||
|
mkdir $env.out
|
||||||
|
|
||||||
|
def run-linter [linterArgs: list<string>] {
|
||||||
|
print $'Running ($linterArgs.0)...'
|
||||||
|
|
||||||
|
let exit_code = try {
|
||||||
|
^$linterArgs.0 ...($linterArgs | skip 1)
|
||||||
|
$env.LAST_EXIT_CODE
|
||||||
|
} catch {|e| $e.exit_code}
|
||||||
|
|
||||||
|
[$linterArgs.0, $exit_code]
|
||||||
|
}
|
||||||
|
|
||||||
|
let results = $linters | each {|linter| run-linter $linter}
|
||||||
|
|
||||||
|
print 'Linter results:'
|
||||||
|
|
||||||
|
let success = $results | each {|result|
|
||||||
|
match $result.1 {
|
||||||
|
0 => {print $'(ansi green)($result.0)(ansi reset)'}
|
||||||
|
_ => {print $'(ansi red)($result.0)(ansi reset)'}
|
||||||
|
}
|
||||||
|
|
||||||
|
$result.1
|
||||||
|
} | math sum
|
||||||
|
|
||||||
|
exit $success
|
|
@ -96,7 +96,7 @@
|
||||||
#########
|
#########
|
||||||
# Tests #
|
# Tests #
|
||||||
#########
|
#########
|
||||||
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
checks.${system} = import ./checks (inputs // { inherit system; });
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
# Garbage collection root #
|
# Garbage collection root #
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue