add psalm check

This commit is contained in:
Robin Appelman 2025-10-25 22:21:52 +02:00
commit d6b95b950d
2 changed files with 50 additions and 8 deletions

View file

@ -40,6 +40,7 @@
})
composerJson;
hasPsalm = pathExists config.psalmConfig;
hasPhpStan = pathExists config.phpStanConfig;
hasPhpCsFixer = pathExists config.phpCsFixerConfig;
buildPhpVersion = pkgs: version:
(phpVersions.${version} pkgs).buildEnv {
@ -70,6 +71,10 @@ in
type = with types; path;
default = src + /psalm.xml;
};
phpStanConfig = mkOption {
type = with types; path;
default = src + /phpstan.neon;
};
phpCsFixerConfig = mkOption {
type = with types; path;
default = src + /.php-cs-fixer.dist.php;
@ -87,7 +92,7 @@ in
|| file.hasExt "stub"
|| file.hasExt "phpstub"
|| match "snapshot__.*\.snap" file.name != null
|| elem file.name [".php-cs-fixer.dist.php" "psalm.xml" "package.json" "package.lock"])
|| elem file.name [".php-cs-fixer.dist.php" "psalm.xml" "package.json" "package.lock" "phpstan.neon"])
src;
};
phpExtensions = mkOption {
@ -116,7 +121,7 @@ in
};
inherit composerMeta filteredSrc;
inherit (final.minPhp.packages) php-cs-fixer composer psalm;
inherit (final.minPhp.packages) php-cs-fixer composer psalm phpstan;
})
];
@ -136,17 +141,23 @@ in
vendor = pkgs: pkgs.vendor;
};
checks = {pkgs, ...}: (optionalAttrs hasPsalm {
psalm = pkgs.callPackage ./checks/psalm.nix {
src = filteredSrc;
};
});
checks = {pkgs, ...}:
(optionalAttrs hasPsalm {
psalm = pkgs.callPackage ./checks/psalm.nix {
src = filteredSrc;
};
})
// (optionalAttrs hasPhpStan {
phpstan = pkgs.callPackage ./checks/phpstan.nix {
src = filteredSrc;
};
});
})
{
devShells = {
default = {
packages = pkgs: (config.tools pkgs) ++ (with pkgs; [minPhp php-cs-fixer composer psalm]);
packages = pkgs: (config.tools pkgs) ++ (with pkgs; [minPhp php-cs-fixer composer psalm phpstan]);
};
};