Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions commitizen/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import argparse
import logging
import platform
import sys
from copy import deepcopy
from functools import partial
Expand All @@ -13,6 +14,7 @@
from decli import cli

from commitizen import commands, config, out, version_schemes
from commitizen.__version__ import __version__
from commitizen.defaults import DEFAULT_SETTINGS
from commitizen.exceptions import (
CommitizenException,
Expand Down Expand Up @@ -103,6 +105,16 @@ def __call__(
"required": False,
"help": "Comma-separated error codes that won't raise error, e.g., cz -nr 1,2,3 bump. See codes at https://commitizen-tools.github.io/commitizen/exit_codes/",
},
{
"name": ["-v", "--version"],
"action": "store_true",
"help": "Show the version of the installed commitizen",
},
{
"name": ["--report"],
"action": "store_true",
"help": "Show system information for reporting bugs",
},
],
"subcommands": {
"title": "commands",
Expand Down Expand Up @@ -643,6 +655,18 @@ def main() -> None:
parser.print_help(sys.stderr)
raise ExpectedExit()

# TODO(bearomorphism): mark `cz version --commitizen` as deprecated after `cz version` feature is stable
if "--version" in sys.argv:
out.write(__version__)
raise ExpectedExit()

# TODO(bearomorphism): mark `cz version --report` as deprecated after `cz version` feature is stable
if "--report" in sys.argv:
out.write(f"Commitizen Version: {__version__}")
out.write(f"Python Version: {sys.version}")
out.write(f"Operating System: {platform.system()}")
raise ExpectedExit()

# This is for the command required constraint in 2.0
try:
args, unknown_args = parser.parse_known_args()
Expand Down
19 changes: 19 additions & 0 deletions tests/test_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from pytest_mock import MockFixture

from commitizen import cli
from commitizen.__version__ import __version__
from commitizen.exceptions import (
ConfigFileNotFound,
ExpectedExit,
Expand Down Expand Up @@ -55,6 +56,24 @@ def test_cz_with_arg_but_without_command(util: UtilFixture):
assert "Command is required" in str(excinfo.value)


def test_cz_with_version_arg(util: UtilFixture, capsys):
"""Test that cz shows the version when --version is used."""
with pytest.raises(ExpectedExit):
util.run_cli("--version")
out, _ = capsys.readouterr()
assert __version__ in out


def test_cz_with_report_arg(util: UtilFixture, capsys):
"""Test that cz shows the report when --report is used."""
with pytest.raises(ExpectedExit):
util.run_cli("--report")
out, _ = capsys.readouterr()
assert "Commitizen Version:" in out
assert "Python Version:" in out
assert "Operating System:" in out


def test_name(util: UtilFixture, capsys):
util.run_cli("-n", "cz_jira", "example")
out, _ = capsys.readouterr()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: the following arguments are required: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: argument {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}: invalid choice: 'invalidCommand' (choose from 'init', 'commit', 'c', 'ls', 'example', 'info', 'schema', 'bump', 'changelog', 'ch', 'check', 'version')
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: the following arguments are required: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: argument {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}: invalid choice: 'invalidCommand' (choose from 'init', 'commit', 'c', 'ls', 'example', 'info', 'schema', 'bump', 'changelog', 'ch', 'check', 'version')
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: the following arguments are required: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...
cz: error: argument {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}: invalid choice: 'invalidCommand' (choose from init, commit, c, ls, example, info, schema, bump, changelog, ch, check, version)
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...
cz: error: the following arguments are required: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...
cz: error: argument {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}: invalid choice: 'invalidCommand' (choose from init, commit, c, ls, example, info, schema, bump, changelog, ch, check, version)
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...
cz: error: the following arguments are required: {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...
cz: error: argument {init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}: invalid choice: 'invalidCommand' (choose from init, commit, c, ls, example, info, schema, bump, changelog, ch, check, version)
5 changes: 4 additions & 1 deletion tests/test_cli/test_no_argv_py_3_10_.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...

Expand All @@ -16,6 +17,8 @@ options:
e.g., cz -nr 1,2,3 bump. See codes at
https://commitizen-
tools.github.io/commitizen/exit_codes/
-v, --version Show the version of the installed commitizen
--report Show system information for reporting bugs

commands:
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Expand Down
5 changes: 4 additions & 1 deletion tests/test_cli/test_no_argv_py_3_11_.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...

Expand All @@ -16,6 +17,8 @@ options:
e.g., cz -nr 1,2,3 bump. See codes at
https://commitizen-
tools.github.io/commitizen/exit_codes/
-v, --version Show the version of the installed commitizen
--report Show system information for reporting bugs

commands:
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Expand Down
5 changes: 4 additions & 1 deletion tests/test_cli/test_no_argv_py_3_12_.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
...

Expand All @@ -16,6 +17,8 @@ options:
e.g., cz -nr 1,2,3 bump. See codes at
https://commitizen-
tools.github.io/commitizen/exit_codes/
-v, --version Show the version of the installed commitizen
--report Show system information for reporting bugs

commands:
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Expand Down
5 changes: 4 additions & 1 deletion tests/test_cli/test_no_argv_py_3_13_.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...

Commitizen is a powerful release management tool that helps teams maintain consistent and meaningful commit messages while automating version management.
Expand All @@ -15,6 +16,8 @@ options:
e.g., cz -nr 1,2,3 bump. See codes at
https://commitizen-
tools.github.io/commitizen/exit_codes/
-v, --version Show the version of the installed commitizen
--report Show system information for reporting bugs

commands:
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Expand Down
5 changes: 4 additions & 1 deletion tests/test_cli/test_no_argv_py_3_14_.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE]
usage: cz [-h] [--config CONFIG] [--debug] [-n NAME] [-nr NO_RAISE] [-v]
[--report]
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version} ...

Commitizen is a powerful release management tool that helps teams maintain consistent and meaningful commit messages while automating version management.
Expand All @@ -15,6 +16,8 @@ options:
e.g., cz -nr 1,2,3 bump. See codes at
https://commitizen-
tools.github.io/commitizen/exit_codes/
-v, --version Show the version of the installed commitizen
--report Show system information for reporting bugs

commands:
{init,commit,c,ls,example,info,schema,bump,changelog,ch,check,version}
Expand Down