Skip to content

Commit ca41b98

Browse files
committed
Add version option
1 parent 06b0f19 commit ca41b98

File tree

3 files changed

+72
-6
lines changed

3 files changed

+72
-6
lines changed

formate/__main__.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,31 @@
3333
# 3rd party
3434
import click
3535
from consolekit import click_command
36-
from consolekit.options import MultiValueOption, colour_option, flag_option, verbose_option
36+
from consolekit.options import MultiValueOption, colour_option, flag_option, verbose_option, version_option
3737
from consolekit.terminal_colours import ColourTrilean, resolve_color_default
3838
from consolekit.tracebacks import handle_tracebacks, traceback_option
3939
from domdf_python_tools.typing import PathLike
4040

41-
# this package
42-
from formate import Reformatter
43-
from formate.utils import _find_from_parents
41+
__all__ = ("main", "version_callback")
4442

45-
__all__ = ("main", )
43+
44+
def version_callback(ctx: click.Context, param: click.Option, value: int):
45+
# this package
46+
import formate
47+
48+
if not value or ctx.resilient_parsing:
49+
return
50+
51+
if value > 1:
52+
python_version = sys.version.replace('\n', ' ')
53+
click.echo(f"formate version {formate.__version__}, Python {python_version}")
54+
else:
55+
click.echo(f"formate version {formate.__version__}")
56+
57+
ctx.exit()
4658

4759

60+
@version_option(version_callback)
4861
@flag_option("--diff", "show_diff", help="Show a diff of changes made")
4962
@traceback_option()
5063
@colour_option()
@@ -91,8 +104,9 @@ def main(
91104
from domdf_python_tools.paths import PathPlus
92105

93106
# this package
107+
from formate import Reformatter
94108
from formate.config import load_toml
95-
from formate.utils import SyntaxTracebackHandler, syntaxerror_for_file
109+
from formate.utils import SyntaxTracebackHandler, _find_from_parents, syntaxerror_for_file
96110

97111
retv = 0
98112

tests/test_cli.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# stdlib
2+
import re
3+
import sys
4+
from typing import Optional
5+
6+
# 3rd party
7+
import pytest
8+
from coincidence.regressions import AdvancedFileRegressionFixture
9+
from consolekit.testing import CliRunner
10+
from domdf_python_tools.words import LF
11+
12+
# this package
13+
import formate
14+
from formate.__main__ import main
15+
16+
17+
def test_help(advanced_file_regression: AdvancedFileRegressionFixture):
18+
19+
runner = CliRunner()
20+
21+
result = runner.invoke(main, catch_exceptions=False, args="--help")
22+
assert result.exit_code == 0
23+
result.check_stdout(advanced_file_regression)
24+
25+
26+
def test_version():
27+
28+
runner = CliRunner()
29+
30+
result = runner.invoke(main, catch_exceptions=False, args="--version")
31+
assert result.exit_code == 0
32+
assert result.stdout == f"formate version {formate.__version__}\n"
33+
34+
result = runner.invoke(main, catch_exceptions=False, args=["--version", "--version"])
35+
assert result.exit_code == 0
36+
assert result.stdout == f"formate version {formate.__version__}, Python {sys.version.replace(LF, ' ')}\n"

tests/test_cli_/test_help.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Usage: main [OPTIONS] [FILENAME]...
2+
3+
Reformat the given Python source files.
4+
5+
Options:
6+
-c, --config-file TEXT The path or filename of the TOML configuration file to
7+
use. If a filename is given it is searched for in the
8+
current and parent directories. [default:
9+
formate.toml]
10+
-e, --exclude PATTERN Patterns for files to exclude from formatting.
11+
-v, --verbose Show verbose output.
12+
--colour / --no-colour Whether to use coloured output.
13+
-T, --traceback Show the complete traceback on error.
14+
--diff Show a diff of changes made
15+
--version Show the version and exit.
16+
-h, --help Show this message and exit.

0 commit comments

Comments
 (0)