diff options
author | Nadav Yosi Azaria <azarin@fb.com> | 2022-03-07 06:03:10 -0800 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2022-03-07 06:03:10 -0800 |
commit | 0901f21f64bda7004788b5623ec23aef724972b1 (patch) | |
tree | 59ce80b17e0f2b9018203b6a64690b5e961bcebc /core/src/main/java/com/facebook | |
parent | a000e5df7a205edffc7cbd9a19f3e33086a5fc0d (diff) | |
download | ktfmt-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.kt | 3 | ||||
-rw-r--r-- | core/src/main/java/com/facebook/ktfmt/cli/ParsedArgs.kt | 11 |
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) } } |