#!/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