Skip to content

Commit 1dcd3ca

Browse files
Gooolermeta-codesync[bot]
authored andcommitted
Add --quiet flag to suppress per-file formatting status output (#603)
Summary: ## Changes - **`ParsedArgs`**: Added `quiet: Boolean` field; added `--quiet` to the argument parser and help text - **`Main.format()`**: Gate the `"Done formatting $fileName"` stderr print behind `!args.quiet`; error messages are always emitted regardless of the flag ## Usage ```sh ktfmt --quiet src/**/*.kt # formats files silently; errors still reported to stderr ``` Closes #558. Pull Request resolved: #603 Reviewed By: cortinico Differential Revision: D95993436 Pulled By: hick209 fbshipit-source-id: bc2f0fdee9d0ebcef74c32ad1776637d31f8f5cc
1 parent f1d3e5d commit 1dcd3ca

5 files changed

Lines changed: 42 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
1212

1313
## [Unreleased]
1414
### Added
15+
1516
- Support `ij_kotlin_continuation_indent_size` in editorconfig.
17+
- Add `--quiet` flag to suppress per-file formatting status output.
1618

1719
### Fixed
1820
- Backtick-escaped full-path imports are no longer incorrectly removed as unused (https://github.com/facebook/ktfmt/issues/532)

core/src/main/java/com/facebook/ktfmt/cli/Main.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,9 @@ class Main(
170170
if (!alreadyFormatted) {
171171
file.writeText(formattedCode, UTF_8)
172172
}
173-
err.println("Done formatting $fileName")
173+
if (!args.quiet) {
174+
err.println("Done formatting $fileName")
175+
}
174176
}
175177

176178
return alreadyFormatted

core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ data class ParsedArgs(
3737
/** File name to report when formating code from stdin */
3838
val stdinName: String?,
3939
val editorConfig: Boolean,
40+
/** Suppress all non-error output. */
41+
val quiet: Boolean,
4042
) {
4143
companion object {
4244

@@ -84,6 +86,7 @@ data class ParsedArgs(
8486
| --do-not-remove-unused-imports Leaves all imports in place, even if not used
8587
| --enable-editorconfig Enable .editorconfig overrides for supported formatting options (limited)
8688
| see https://github.com/facebook/ktfmt/blob/main/README.md
89+
| --quiet Suppress all non-error output
8790
|
8891
|ARGFILE:
8992
| If the only argument begins with '@', the remainder of the argument is treated
@@ -110,6 +113,7 @@ data class ParsedArgs(
110113
var removeUnusedImports = true
111114
var stdinName: String? = null
112115
var editorConfig = false
116+
var quiet = false
113117

114118
if ("--help" in args || "-h" in args) return ParseResult.ShowMessage(HELP_TEXT)
115119
if ("--version" in args || "-v" in args) {
@@ -125,6 +129,7 @@ data class ParsedArgs(
125129
arg == "--set-exit-if-changed" -> setExitIfChanged = true
126130
arg == "--do-not-remove-unused-imports" -> removeUnusedImports = false
127131
arg == "--enable-editorconfig" -> editorConfig = true
132+
arg == "--quiet" -> quiet = true
128133
arg.startsWith("--stdin-name=") ->
129134
stdinName =
130135
parseKeyValueArg("--stdin-name", arg)
@@ -158,6 +163,7 @@ data class ParsedArgs(
158163
setExitIfChanged,
159164
stdinName,
160165
editorConfig,
166+
quiet,
161167
)
162168
)
163169
}

core/src/test/java/com/facebook/ktfmt/cli/MainTest.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,4 +538,27 @@ class MainTest {
538538

539539
assertThat(exitCode).isEqualTo(0)
540540
}
541+
542+
@Test
543+
fun `--quiet suppresses 'Done formatting' output`() {
544+
val code = """fun f () = println( "hello, world" )"""
545+
val file = root.resolve("foo.kt")
546+
file.writeText(code, UTF_8)
547+
548+
Main(emptyInput, PrintStream(out), PrintStream(err), arrayOf("--quiet", file.toString())).run()
549+
550+
assertThat(err.toString(testCharset)).doesNotContain("Done formatting")
551+
}
552+
553+
@Test
554+
fun `--quiet still reports errors`() {
555+
val fooBar = root.resolve("foo.kt")
556+
fooBar.writeText("fun f1 ( ", UTF_8)
557+
val returnValue =
558+
Main(emptyInput, PrintStream(out), PrintStream(err), arrayOf("--quiet", fooBar.toString()))
559+
.run()
560+
561+
assertThat(returnValue).isEqualTo(1)
562+
assertThat(err.toString(testCharset)).contains("foo.kt:1:14: error: ")
563+
}
541564
}

core/src/test/java/com/facebook/ktfmt/cli/ParsedArgsTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ class ParsedArgsTest {
109109
assertThat(parsed.editorConfig).isEqualTo(true)
110110
}
111111

112+
@Test
113+
fun `parseOptions recognizes --quiet`() {
114+
val parsed = assertSucceeds(ParsedArgs.parseOptions(arrayOf("--quiet", "foo.kt")))
115+
assertThat(parsed.quiet).isTrue()
116+
}
117+
112118
@Test
113119
fun `parseOptions recognizes --stdin-name`() {
114120
val parsed = assertSucceeds(ParsedArgs.parseOptions(arrayOf("--stdin-name=my/foo.kt", "-")))
@@ -251,6 +257,7 @@ class ParsedArgsTest {
251257
removedUnusedImports: Boolean = true,
252258
stdinName: String? = null,
253259
editorConfig: Boolean = false,
260+
quiet: Boolean = false,
254261
): ParseResult.Ok {
255262
val returnedFormattingOptions =
256263
formattingOptions.copy(removeUnusedImports = removedUnusedImports)
@@ -262,6 +269,7 @@ class ParsedArgsTest {
262269
setExitIfChanged,
263270
stdinName,
264271
editorConfig,
272+
quiet,
265273
)
266274
)
267275
}

0 commit comments

Comments
 (0)