biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / tools / admin / ansible / lint.nix
blob0e2757d548e8ff0c558a5be0f472dcd108656e41
1 { lib
2 , python3
3 , fetchPypi
4 , ansible
5 }:
7 python3.pkgs.buildPythonApplication rec {
8   pname = "ansible-lint";
9   version = "24.9.2";
10   format = "pyproject";
12   src = fetchPypi {
13     inherit version;
14     pname = "ansible_lint";
15     hash = "sha256-fP9sWvEO+Za3xgEMvUjJFZJ2SuCY8rBUCHJomaEGan8=";
16   };
18   postPatch = ''
19     # it is fine if lint tools are missing
20     substituteInPlace conftest.py \
21       --replace "sys.exit(1)" ""
22   '';
24   nativeBuildInputs = with python3.pkgs; [
25     setuptools
26     setuptools-scm
27   ];
29   pythonRelaxDeps = [
30     "ruamel.yaml"
31   ];
33   propagatedBuildInputs = with python3.pkgs; [
34     # https://github.com/ansible/ansible-lint/blob/master/.config/requirements.in
35     ansible-core
36     ansible-compat
37     black
38     filelock
39     importlib-metadata
40     jsonschema
41     packaging
42     pyyaml
43     rich
44     ruamel-yaml
45     subprocess-tee
46     wcmatch
47     yamllint
48   ];
50   # tests can't be easily run without installing things from ansible-galaxy
51   doCheck = false;
53   nativeCheckInputs = with python3.pkgs; [
54     flaky
55     pytest-xdist
56     pytestCheckHook
57   ];
59   preCheck = ''
60     # ansible wants to write to $HOME and crashes if it can't
61     export HOME=$(mktemp -d)
62     export PATH=$PATH:${lib.makeBinPath [ ansible ]}
64     # create a working ansible-lint executable
65     export PATH=$PATH:$PWD/src/ansiblelint
66     ln -rs src/ansiblelint/__main__.py src/ansiblelint/ansible-lint
67     patchShebangs src/ansiblelint/__main__.py
69     # create symlink like in the git repo so test_included_tasks does not fail
70     ln -s ../roles examples/playbooks/roles
71   '';
73   disabledTests = [
74     # requires network
75     "test_cli_auto_detect"
76     "test_install_collection"
77     "test_prerun_reqs_v1"
78     "test_prerun_reqs_v2"
79     "test_require_collection_wrong_version"
80     # re-execs ansible-lint which does not works correct
81     "test_custom_kinds"
82     "test_run_inside_role_dir"
83     "test_run_multiple_role_path_no_trailing_slash"
84     "test_runner_exclude_globs"
85     "test_discover_lintables_umlaut"
86   ];
88   makeWrapperArgs = [ "--prefix PATH : ${lib.makeBinPath [ ansible ]}" ];
90   meta = with lib; {
91     description = "Best practices checker for Ansible";
92     mainProgram = "ansible-lint";
93     homepage = "https://github.com/ansible/ansible-lint";
94     changelog = "https://github.com/ansible/ansible-lint/releases/tag/v${version}";
95     license = licenses.mit;
96     maintainers = with maintainers; [ sengaya ];
97   };