aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/java/com/facebook
diff options
context:
space:
mode:
authorNadav Yosi Azaria <azarin@fb.com>2022-03-07 06:03:10 -0800
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2022-03-07 06:03:10 -0800
commit0901f21f64bda7004788b5623ec23aef724972b1 (patch)
tree59ce80b17e0f2b9018203b6a64690b5e961bcebc /core/src/main/java/com/facebook
parenta000e5df7a205edffc7cbd9a19f3e33086a5fc0d (diff)
downloadktfmt-0901f21f64bda7004788b5623ec23aef724972b1.tar.gz
Add support for @argsfile
Summary: added a new argument type with the format @[filename]. If supplied, ktfmt arguments will be extracted from file. Reviewed By: cgrushko Differential Revision: D34612728 fbshipit-source-id: 46cb237b12fd929719fcab7c05a5f42ec7d398fa
Diffstat (limited to 'core/src/main/java/com/facebook')
-rw-r--r--core/src/main/java/com/facebook/ktfmt/cli/Main.kt3
-rw-r--r--core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt11
2 files changed, 13 insertions, 1 deletions
diff --git a/core/src/main/java/com/facebook/ktfmt/cli/Main.kt b/core/src/main/java/com/facebook/ktfmt/cli/Main.kt
index f71cd4c..4c965bb 100644
--- a/core/src/main/java/com/facebook/ktfmt/cli/Main.kt
+++ b/core/src/main/java/com/facebook/ktfmt/cli/Main.kt
@@ -65,12 +65,13 @@ class Main(
}
}
- private val parsedArgs: ParsedArgs = ParsedArgs.parseOptions(err, args)
+ private val parsedArgs: ParsedArgs = ParsedArgs.processArgs(err, args)
fun run(): Int {
if (parsedArgs.fileNames.isEmpty()) {
err.println(
"Usage: ktfmt [--dropbox-style | --google-style | --kotlinlang-style] [--dry-run] [--set-exit-if-changed] File1.kt File2.kt ...")
+ err.println("Or: ktfmt @file")
return 1
}
diff --git a/core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt b/core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt
index bb959c8..503cb89 100644
--- a/core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt
+++ b/core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt
@@ -18,6 +18,7 @@ package com.facebook.ktfmt.cli
import com.facebook.ktfmt.format.Formatter
import com.facebook.ktfmt.format.FormattingOptions
+import java.io.File
import java.io.PrintStream
/** ParsedArgs holds the arguments passed to ktfmt on the command-line, after parsing. */
@@ -34,6 +35,15 @@ data class ParsedArgs(
val setExitIfChanged: Boolean,
) {
companion object {
+
+ fun processArgs(err: PrintStream, args: Array<String>): ParsedArgs {
+ if (args.size == 1 && args[0].startsWith("@")) {
+ return parseOptions(err, File(args[0].substring(1)).readLines().toTypedArray())
+ } else {
+ return parseOptions(err, args)
+ }
+ }
+
/** parseOptions parses command-line arguments passed to ktfmt. */
fun parseOptions(err: PrintStream, args: Array<String>): ParsedArgs {
val fileNames = mutableListOf<String>()
@@ -49,6 +59,7 @@ data class ParsedArgs(
arg == "--dry-run" || arg == "-n" -> dryRun = true
arg == "--set-exit-if-changed" -> setExitIfChanged = true
arg.startsWith("--") -> err.println("Unexpected option: $arg")
+ arg.startsWith("@") -> err.println("Unexpected option: $arg")
else -> fileNames.add(arg)
}
}