From bc4224e2bbdb2f9af3a3bbae1ed54c33c5daf422 Mon Sep 17 00:00:00 2001 From: John Perez Date: Fri, 17 Mar 2023 18:22:08 -0500 Subject: [PATCH] refac(doc): #1055 use statix - Use `statix` as the `lintNix` main package - Fix warnings from the linter Signed-off-by: John Perez --- src/args/agnostic.nix | 22 ++++++++-------- src/args/chunks/default.nix | 4 +-- src/args/make-node-js-modules/default.nix | 7 +++--- .../make-python-pypi-environment/default.nix | 6 ++--- src/args/make-ruby-gems-install/default.nix | 2 +- src/args/string-capitalize/default.nix | 2 +- src/args/sublist/default.nix | 2 +- src/evaluator/default.nix | 4 +-- .../modules/calculate-scorecard/default.nix | 4 +-- .../modules/lint-git-commit-msg/default.nix | 4 +-- .../modules/lint-git-mailmap/default.nix | 2 +- src/evaluator/modules/lint-nix/builder.sh | 25 +------------------ src/evaluator/modules/lint-nix/default.nix | 2 +- src/evaluator/modules/lint-python/default.nix | 14 ++++++----- src/nix/sources.nix | 23 +++++++++-------- 15 files changed, 51 insertions(+), 72 deletions(-) diff --git a/src/args/agnostic.nix b/src/args/agnostic.nix index 5fb7dd24..4319695f 100644 --- a/src/args/agnostic.nix +++ b/src/args/agnostic.nix @@ -29,17 +29,17 @@ deployContainerImage = import ./deploy-container-image/default.nix self; deployNomad = import ./deploy-nomad/default.nix self; deployTerraform = import ./deploy-terraform/default.nix self; - escapeShellArg = self.__nixpkgs__.lib.strings.escapeShellArg; - escapeShellArgs = self.__nixpkgs__.lib.strings.escapeShellArgs; - fakeSha256 = self.__nixpkgs__.lib.fakeSha256; + inherit (self.__nixpkgs__.lib.strings) escapeShellArg; + inherit (self.__nixpkgs__.lib.strings) escapeShellArgs; + inherit (self.__nixpkgs__.lib) fakeSha256; fetchArchive = import ./fetch-archive/default.nix self; fetchGithub = import ./fetch-github/default.nix self; fetchGitlab = import ./fetch-gitlab/default.nix self; fetchNixpkgs = import ./fetch-nixpkgs/default.nix self; fetchRubyGem = import ./fetch-rubygem/default.nix self; fetchUrl = import ./fetch-url/default.nix self; - filterAttrs = self.__nixpkgs__.lib.filterAttrs; - flatten = self.__nixpkgs__.lib.lists.flatten; + inherit (self.__nixpkgs__.lib) filterAttrs; + inherit (self.__nixpkgs__.lib.lists) flatten; formatBash = import ./format-bash/default.nix self; formatNix = import ./format-nix/default.nix self; formatTerraform = import ./format-terraform/default.nix self; @@ -50,10 +50,10 @@ fromYaml = import ./from-yaml/default.nix self; fromYamlFile = path: self.fromYaml (builtins.readFile path); gitlabCi = import ./gitlab-ci/default.nix; - hasPrefix = self.__nixpkgs__.lib.strings.hasPrefix; - hasSuffix = self.__nixpkgs__.lib.strings.hasSuffix; - isDarwin = self.__nixpkgs__.stdenv.isDarwin; - isLinux = self.__nixpkgs__.stdenv.isLinux; + inherit (self.__nixpkgs__.lib.strings) hasPrefix; + inherit (self.__nixpkgs__.lib.strings) hasSuffix; + inherit (self.__nixpkgs__.stdenv) isDarwin; + inherit (self.__nixpkgs__.stdenv) isLinux; libGit = import ./lib-git/default.nix self; listOptional = self.__nixpkgs__.lib.lists.optional; lintClojure = import ./lint-clojure/default.nix self; @@ -65,7 +65,7 @@ lintTerraform = import ./lint-terraform/default.nix self; lintWithAjv = import ./lint-with-ajv/default.nix self; lintWithLizard = import ./lint-with-lizard/default.nix self; - listFilesRecursive = self.__nixpkgs__.lib.filesystem.listFilesRecursive; + inherit (self.__nixpkgs__.lib.filesystem) listFilesRecursive; makeContainerImage = import ./make-container-image/default.nix self; makeDerivation = import ./make-derivation/default.nix self; makeDerivationParallel = import ./make-derivation-parallel/default.nix self; @@ -97,7 +97,7 @@ makeWorkspaceForTerraformFromEnv = import ./make-workspace-for-terraform-from-env/default.nix self; managePorts = import ./manage-ports/default.nix self; patchShebangs = import ./patch-shebangs/default.nix self; - removePrefix = self.__nixpkgs__.lib.removePrefix; + inherit (self.__nixpkgs__.lib) removePrefix; secureKubernetesWithRbacPolice = import ./secure-kubernetes-with-rbac-police/default.nix self; securePythonWithBandit = import ./secure-python-with-bandit/default.nix self; sortAscii = builtins.sort (a: b: a < b); diff --git a/src/args/chunks/default.nix b/src/args/chunks/default.nix index fb4bf17d..1e7aed05 100644 --- a/src/args/chunks/default.nix +++ b/src/args/chunks/default.nix @@ -3,13 +3,13 @@ sublist, ... }: list: n: let - lib = __nixpkgs__.lib; + inherit (__nixpkgs__) lib; len = lib.lists.length list; div = len / n; mod = lib.trivial.mod len n; range = lib.lists.range 0 (n - 1); - min = lib.trivial.min; + inherit (lib.trivial) min; startIndex = i: i * div + (min i mod); endIndex = i: (i + 1) * div + (min (i + 1) mod); in diff --git a/src/args/make-node-js-modules/default.nix b/src/args/make-node-js-modules/default.nix index 597787d2..e15ec8d3 100644 --- a/src/args/make-node-js-modules/default.nix +++ b/src/args/make-node-js-modules/default.nix @@ -15,8 +15,7 @@ packageLockJson, searchPaths ? {}, shouldIgnoreScripts ? false, -}: -let +}: let nodeJs = makeNodeJsVersion nodeJsVersion; packageLock = fromJsonFile packageLockJson; @@ -57,7 +56,7 @@ let // (attrsGet packageLock "devDependencies" {}) ); dependenciesGrouped = - __nixpkgs__.lib.lists.groupBy + builtins.groupBy (dep: dep.name) dependenciesFlat; @@ -77,7 +76,7 @@ let dist.tarball = versionAttrs.resolvedName; }; }) - (dependenciesGrouped.${name})); + dependenciesGrouped.${name}); }; }) (builtins.attrNames dependenciesGrouped); diff --git a/src/args/make-python-pypi-environment/default.nix b/src/args/make-python-pypi-environment/default.nix index 3e2165cd..d8f6d099 100644 --- a/src/args/make-python-pypi-environment/default.nix +++ b/src/args/make-python-pypi-environment/default.nix @@ -57,7 +57,7 @@ assert builtins.any (_: _) [ url = "https://files.pythonhosted.org/packages/ec/30/8707699ea6e1c1cbe79c37e91f5b06a6266de24f699a5e19b8c0a63c4b65/Cython-0.29.24-py2.py3-none-any.whl"; } ]; - python = sources.python; + inherit (sources) python; }; })) (listOptional withNumpy_1_24_0 (makePythonPypiEnvironment { @@ -83,7 +83,7 @@ assert builtins.any (_: _) [ url = "https://pypi.org/packages/py2.py3/w/wheel/wheel-0.37.0-py2.py3-none-any.whl"; } ]; - python = sources.python; + inherit (sources) python; }; })) ]; @@ -108,7 +108,7 @@ assert builtins.any (_: _) [ }; }) (builtins.concatLists [ - (sources.links) + sources.links (listOptional withSetuptools_57_4_0 { name = "setuptools-57.4.0-py3-none-any.whl"; sha256 = "1mhq6jw21sglccqmimydqi2rjvh3g5xjykb16gcvkkx6gabk14m4"; diff --git a/src/args/make-ruby-gems-install/default.nix b/src/args/make-ruby-gems-install/default.nix index 99dc2c34..d9f11694 100644 --- a/src/args/make-ruby-gems-install/default.nix +++ b/src/args/make-ruby-gems-install/default.nix @@ -21,7 +21,7 @@ rubyGem: let gem = fetchRubyGem rubyGem; in { - name = gem.name; + inherit (gem) name; path = gem; } ) diff --git a/src/args/string-capitalize/default.nix b/src/args/string-capitalize/default.nix index a98036b9..650afb3a 100644 --- a/src/args/string-capitalize/default.nix +++ b/src/args/string-capitalize/default.nix @@ -1,5 +1,5 @@ {__nixpkgs__, ...}: str: let - lib = __nixpkgs__.lib; + inherit (__nixpkgs__) lib; head = lib.strings.toUpper (builtins.substring 0 1 str); tail = builtins.concatStringsSep "" ( builtins.tail (lib.stringToCharacters str) diff --git a/src/args/sublist/default.nix b/src/args/sublist/default.nix index 6658a227..5c30da51 100644 --- a/src/args/sublist/default.nix +++ b/src/args/sublist/default.nix @@ -1,5 +1,5 @@ {__nixpkgs__, ...}: list: start: end: let - lib = __nixpkgs__.lib; + inherit (__nixpkgs__) lib; range = lib.lists.range start (end - 1); in diff --git a/src/evaluator/default.nix b/src/evaluator/default.nix index 618f8d91..29cee2ef 100644 --- a/src/evaluator/default.nix +++ b/src/evaluator/default.nix @@ -40,8 +40,8 @@ args = import "${makesSrcOverriden}/src/args/default.nix" { inputs = flakeInputs // result.config.inputs; - outputs = result.config.outputs; - projectIdentifier = result.config.projectIdentifier; + inherit (result.config) outputs; + inherit (result.config) projectIdentifier; inherit projectSrc; stateDirs = { global = result.config.globalStateDir; diff --git a/src/evaluator/modules/calculate-scorecard/default.nix b/src/evaluator/modules/calculate-scorecard/default.nix index 687496dc..894a05f6 100644 --- a/src/evaluator/modules/calculate-scorecard/default.nix +++ b/src/evaluator/modules/calculate-scorecard/default.nix @@ -35,8 +35,8 @@ if config.calculateScorecard.checks == [] then config.calculateScorecard.checks else builtins.concatStringsSep "," config.calculateScorecard.checks; - format = config.calculateScorecard.format; - target = config.calculateScorecard.target; + inherit (config.calculateScorecard) format; + inherit (config.calculateScorecard) target; } ); }; diff --git a/src/evaluator/modules/lint-git-commit-msg/default.nix b/src/evaluator/modules/lint-git-commit-msg/default.nix index 70a97f68..1e6f5704 100644 --- a/src/evaluator/modules/lint-git-commit-msg/default.nix +++ b/src/evaluator/modules/lint-git-commit-msg/default.nix @@ -34,9 +34,9 @@ outputs = { "/lintGitCommitMsg" = lib.mkIf - (config.lintGitCommitMsg.enable) + config.lintGitCommitMsg.enable (lintGitCommitMsg { - branch = config.lintGitCommitMsg.branch; + inherit (config.lintGitCommitMsg) branch; config = if config.lintGitCommitMsg.config == null then ./config.js diff --git a/src/evaluator/modules/lint-git-mailmap/default.nix b/src/evaluator/modules/lint-git-mailmap/default.nix index 7f9ae124..c408bc7e 100644 --- a/src/evaluator/modules/lint-git-mailmap/default.nix +++ b/src/evaluator/modules/lint-git-mailmap/default.nix @@ -15,7 +15,7 @@ outputs = { "/lintGitMailMap" = lib.mkIf - (config.lintGitMailMap.enable) + config.lintGitMailMap.enable (lintGitMailMap { name = "lint-git-mailmap"; src = "."; diff --git a/src/evaluator/modules/lint-nix/builder.sh b/src/evaluator/modules/lint-nix/builder.sh index f3e15a93..196313b8 100644 --- a/src/evaluator/modules/lint-nix/builder.sh +++ b/src/evaluator/modules/lint-nix/builder.sh @@ -3,34 +3,11 @@ function main { export LANG=C.UTF-8 source "${envTargets}/template" local targets - local args=( - # --check=AlphabeticalArgs - # --check=AlphabeticalBindings - --check=BetaReduction - --check=DIYInherit - --check=EmptyVariadicParamSet - --check=EmptyInherit - --check=EmptyLet - --check=EtaReduce - --check=FreeLetInFunc - --check=LetInInheritRecset - --check=ListLiteralConcat - --check=NegateAtom - --check=SequentialLet - --check=SetLiteralUpdate - --check=UnfortunateArgName - --check=UnneededAntiquote - --check=UnneededRec - --check=UnusedArg - --check=UnusedLetBind - --check=UpdateEmptySet - --recursive - ) info Linting Nix code \ && for target in "${targets[@]}"; do info Linting "${target}" \ - && nix-linter "${args[@]}" "${target}" \ + && statix check "${args[@]}" "${target}" \ || return 1 done \ && touch "${out}" diff --git a/src/evaluator/modules/lint-nix/default.nix b/src/evaluator/modules/lint-nix/default.nix index cdb9c565..9279dca5 100644 --- a/src/evaluator/modules/lint-nix/default.nix +++ b/src/evaluator/modules/lint-nix/default.nix @@ -34,7 +34,7 @@ name = "lint-nix"; searchPaths = { bin = [ - __nixpkgs__.nix-linter + __nixpkgs__.statix ]; }; builder = ./builder.sh; diff --git a/src/evaluator/modules/lint-python/default.nix b/src/evaluator/modules/lint-python/default.nix index b43d994e..2ecb8919 100644 --- a/src/evaluator/modules/lint-python/default.nix +++ b/src/evaluator/modules/lint-python/default.nix @@ -48,16 +48,18 @@ builtins.map (moduleName: { name = "/lintPython/dirOfModules/${name}/${moduleName}"; - value = - (makeModule moduleName { + inherit + ((makeModule moduleName { inherit searchPaths; inherit python; src = "${src}/${moduleName}"; - }) - .value; + })) + value + ; }) (projectPathLsDirs src); - in (modules + in + modules ++ [ { name = "/lintPython/dirOfModules/${name}"; @@ -66,7 +68,7 @@ name = "lint-python-dir-of-modules-for-${name}"; }; } - ]); + ]; in { options = { lintPython = { diff --git a/src/nix/sources.nix b/src/nix/sources.nix index ceeba0aa..e6547135 100644 --- a/src/nix/sources.nix +++ b/src/nix/sources.nix @@ -37,13 +37,14 @@ let fetch_git = name: spec: let ref = - if spec ? ref - then spec.ref - else 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`!"; + 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; @@ -119,7 +120,7 @@ let # the path directly as opposed to the fetched source. replace = name: let saneName = stringAsChars (c: - if isNull (builtins.match "[a-zA-Z0-9]" c) + if ((builtins.match "[a-zA-Z0-9]" c) == null) then "_" else c) name; @@ -178,7 +179,7 @@ let inherit (builtins) lessThan nixVersion fetchTarball; in if lessThan nixVersion "1.12" - then fetchTarball ({inherit url;} // (optionalAttrs (!isNull name) {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 @@ -190,7 +191,7 @@ let inherit (builtins) lessThan nixVersion fetchurl; in if lessThan nixVersion "1.12" - then fetchurl ({inherit url;} // (optionalAttrs (!isNull name) {inherit name;})) + then fetchurl ({inherit url;} // (optionalAttrs (name != null) {inherit name;})) else fetchurl attrs; # Create the final "sources" from the config @@ -213,7 +214,7 @@ let then ./sources.json else null, sources ? - if isNull sourcesFile + if (sourcesFile == null) then {} else builtins.fromJSON (builtins.readFile sourcesFile), system ? builtins.currentSystem,