nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ buildPythonApplication
2, colorama
3, decli
4, fetchFromGitHub
5, git
6, jinja2
7, lib
8, packaging
9, poetry
10, pytest-freezegun
11, pytest-mock
12, pytest-regressions
13, pytestCheckHook
14, pyyaml
15, questionary
16, termcolor
17, tomlkit
18, typing-extensions
19
20, argcomplete, fetchPypi
21}:
22
23let
24 # NOTE: Upstream requires argcomplete <2, so we make it here.
25 argcomplete_1 = argcomplete.overrideAttrs (old: rec {
26 version = "1.12.3";
27 src = fetchPypi {
28 inherit (old) pname;
29 inherit version;
30 sha256 = "sha256-LH2//YwEXqU0kh5jsL5v5l6IWZmQ2NxAisjFQrcqVEU=";
31 };
32 });
33in
34
35buildPythonApplication rec {
36 pname = "commitizen";
37 version = "2.21.2";
38
39 src = fetchFromGitHub {
40 owner = "commitizen-tools";
41 repo = pname;
42 rev = "v${version}";
43 sha256 = "sha256-7S676bpSrlAqpbgDj9nAo0WjeitbbHoYc693MJm35Js=";
44 deepClone = true;
45 };
46
47 format = "pyproject";
48
49 nativeBuildInputs = [ poetry ];
50
51 propagatedBuildInputs = [
52 termcolor
53 questionary
54 colorama
55 decli
56 tomlkit
57 jinja2
58 pyyaml
59 argcomplete_1
60 typing-extensions
61 packaging
62 ];
63
64 doCheck = true;
65 checkInputs = [
66 pytestCheckHook
67 pytest-freezegun
68 pytest-mock
69 pytest-regressions
70 argcomplete_1
71 git
72 ];
73
74 # NB: These require full git history
75 disabledTests = [
76 "test_breaking_change_content_v1"
77 "test_breaking_change_content_v1_beta"
78 "test_breaking_change_content_v1_multiline"
79 "test_bump_command_prelease"
80 "test_bump_dry_run"
81 "test_bump_files_only"
82 "test_bump_local_version"
83 "test_bump_major_increment"
84 "test_bump_minor_increment"
85 "test_bump_on_git_with_hooks_no_verify_disabled"
86 "test_bump_on_git_with_hooks_no_verify_enabled"
87 "test_bump_patch_increment"
88 "test_bump_tag_exists_raises_exception"
89 "test_bump_when_bumpping_is_not_support"
90 "test_bump_when_version_inconsistent_in_version_files"
91 "test_bump_with_changelog_arg"
92 "test_bump_with_changelog_config"
93 "test_bump_with_changelog_to_stdout_arg"
94 "test_changelog_config_flag_increment"
95 "test_changelog_config_start_rev_option"
96 "test_changelog_from_start"
97 "test_changelog_from_version_zero_point_two"
98 "test_changelog_hook"
99 "test_changelog_incremental_angular_sample"
100 "test_changelog_incremental_keep_a_changelog_sample"
101 "test_changelog_incremental_keep_a_changelog_sample_with_annotated_tag"
102 "test_changelog_incremental_with_release_candidate_version"
103 "test_changelog_is_persisted_using_incremental"
104 "test_changelog_multiple_incremental_do_not_add_new_lines"
105 "test_changelog_replacing_unreleased_using_incremental"
106 "test_changelog_with_different_cz"
107 "test_get_commits"
108 "test_get_commits_author_and_email"
109 "test_get_commits_with_signature"
110 "test_get_latest_tag_name"
111 "test_is_staging_clean_when_updating_file"
112 "test_none_increment_should_not_call_git_tag_and_error_code_is_not_zero"
113 "test_prevent_prerelease_when_no_increment_detected"
114 ];
115
116 meta = with lib; {
117 description = "Tool to create committing rules for projects, auto bump versions, and generate changelogs";
118 homepage = "https://github.com/commitizen-tools/commitizen";
119 license = licenses.mit;
120 maintainers = with maintainers; [ lovesegfault ];
121 };
122}