Options:
-l, --line-length INTEGER Where to wrap around. [default: 88]
--check Don't write back the files, just return the
- status. Return code 0 means nothing changed.
- Return code 1 means some files were reformatted.
- Return code 123 means there was an internal
- error.
+ status. Return code 0 means nothing would
+ change. Return code 1 means some files would be
+ reformatted. Return code 123 means there was an
+ internal error.
--fast / --safe If --fast given, skip temporary sanity checks.
[default: --safe]
--version Show the version and exit.
* it does nothing if no sources are passed to it;
* it will read from standard input and write to standard output if `-`
is used as the filename;
-* it only outputs messages to users on standard error.
+* it only outputs messages to users on standard error;
+* exits with code 0 unless an internal error occured (or `--check` was
+ used).
## The philosophy behind *Black*
### 18.3a4 (unreleased)
+* only return exit code 1 when --check is used (#50)
+
* don't remove single trailing commas from square bracket indexing
(#59)
is_flag=True,
help=(
"Don't write back the files, just return the status. Return code 0 "
- "means nothing changed. Return code 1 means some files were "
+ "means nothing would change. Return code 1 means some files would be "
"reformatted. Return code 123 means there was an internal error."
),
)
ctx.exit(0)
elif len(sources) == 1:
p = sources[0]
- report = Report()
+ report = Report(check=check)
try:
if not p.is_file() and str(p) == '-':
changed = format_stdin_to_stdout(
@dataclass
class Report:
"""Provides a reformatting counter."""
+ check: bool = False
change_count: int = 0
same_count: int = 0
failure_count: int = 0
def done(self, src: Path, changed: bool) -> None:
"""Increment the counter for successful reformatting. Write out a message."""
if changed:
- out(f'reformatted {src}')
+ reformatted = 'would reformat' if self.check else 'reformatted'
+ out(f'{reformatted} {src}')
self.change_count += 1
else:
out(f'{src} already well formatted, good job.', bold=False)
if self.failure_count:
return 123
- elif self.change_count:
+ elif self.change_count and self.check:
return 1
return 0
Use `click.unstyle` to remove colors.
"""
+ if self.check:
+ reformatted = "would be reformatted"
+ unchanged = "would be left unchanged"
+ failed = "would fail to reformat"
+ else:
+ reformatted = "reformatted"
+ unchanged = "left unchanged"
+ failed = "failed to reformat"
report = []
if self.change_count:
s = 's' if self.change_count > 1 else ''
report.append(
- click.style(f'{self.change_count} file{s} reformatted', bold=True)
+ click.style(f'{self.change_count} file{s} {reformatted}', bold=True)
)
if self.same_count:
s = 's' if self.same_count > 1 else ''
- report.append(f'{self.same_count} file{s} left unchanged')
+ report.append(f'{self.same_count} file{s} {unchanged}')
if self.failure_count:
s = 's' if self.failure_count > 1 else ''
report.append(
- click.style(
- f'{self.failure_count} file{s} failed to reformat', fg='red'
- )
+ click.style(f'{self.failure_count} file{s} {failed}', fg='red')
)
return ', '.join(report) + '.'
self.assertEqual(
unstyle(str(report)), '1 file reformatted, 1 file left unchanged.'
)
+ self.assertEqual(report.return_code, 0)
+ report.check = True
self.assertEqual(report.return_code, 1)
+ report.check = False
report.failed(Path('e1'), 'boom')
self.assertEqual(len(out_lines), 2)
self.assertEqual(len(err_lines), 1)
'2 files failed to reformat.',
)
self.assertEqual(report.return_code, 123)
+ report.check = True
+ self.assertEqual(
+ unstyle(str(report)),
+ '2 files would be reformatted, 2 files would be left unchanged, '
+ '2 files would fail to reformat.',
+ )
def test_is_python36(self) -> None:
node = black.lib2to3_parse("def f(*, arg): ...\n")