From 4c91240f69bc4982c5c3908087dfccdbcb93e5aa Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Tue, 8 Apr 2025 17:40:47 -0700 Subject: [PATCH] Internal change PiperOrigin-RevId: 745356200 --- .../java/CommandLineOptions.java | 5 ++- .../java/CommandLineOptionsParser.java | 35 ++++++++----------- .../google/googlejavaformat/java/Main.java | 11 +++--- .../java/CommandLineFlagsTest.java | 7 +++- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptions.java b/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptions.java index e794a1815..0421c5574 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptions.java +++ b/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptions.java @@ -57,7 +57,8 @@ record CommandLineOptions( boolean setExitIfChanged, Optional assumeFilename, boolean reflowLongStrings, - boolean formatJavadoc) { + boolean formatJavadoc, + Optional profile) { /** Returns true if partial formatting was selected. */ boolean isSelection() { @@ -129,6 +130,8 @@ default Builder addLength(Integer length) { Builder formatJavadoc(boolean formatJavadoc); + Builder profile(String profile); + CommandLineOptions build(); } } diff --git a/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptionsParser.java b/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptionsParser.java index 098a263f4..1128fbf13 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptionsParser.java +++ b/core/src/main/java/com/google/googlejavaformat/java/CommandLineOptionsParser.java @@ -14,7 +14,6 @@ package com.google.googlejavaformat.java; -import static java.nio.charset.StandardCharsets.UTF_8; import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; @@ -26,7 +25,6 @@ import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -64,72 +62,67 @@ static CommandLineOptions parse(Iterable options) { flag = option; value = null; } + flag = flag.startsWith("--") ? flag.substring(1) : flag; // NOTE: update usage information in UsageException when new flags are added switch (flag) { case "-i": case "-r": case "-replace": - case "--replace": optionsBuilder.inPlace(true); break; - case "--lines": case "-lines": - case "--line": case "-line": parseRangeSet(linesBuilder, getValue(flag, it, value)); break; - case "--offset": case "-offset": optionsBuilder.addOffset(parseInteger(it, flag, value)); break; - case "--length": case "-length": optionsBuilder.addLength(parseInteger(it, flag, value)); break; - case "--aosp": case "-aosp": case "-a": optionsBuilder.aosp(true); break; - case "--version": case "-version": case "-v": optionsBuilder.version(true); break; - case "--help": case "-help": case "-h": optionsBuilder.help(true); break; - case "--fix-imports-only": + case "-fix-imports-only": optionsBuilder.fixImportsOnly(true); break; - case "--skip-sorting-imports": + case "-skip-sorting-imports": optionsBuilder.sortImports(false); break; - case "--skip-removing-unused-imports": + case "-skip-removing-unused-imports": optionsBuilder.removeUnusedImports(false); break; - case "--skip-reflowing-long-strings": + case "-skip-reflowing-long-strings": optionsBuilder.reflowLongStrings(false); break; - case "--skip-javadoc-formatting": + case "-skip-javadoc-formatting": optionsBuilder.formatJavadoc(false); break; case "-": optionsBuilder.stdin(true); break; case "-n": - case "--dry-run": + case "-dry-run": optionsBuilder.dryRun(true); break; - case "--set-exit-if-changed": + case "-set-exit-if-changed": optionsBuilder.setExitIfChanged(true); break; case "-assume-filename": - case "--assume-filename": optionsBuilder.assumeFilename(getValue(flag, it, value)); break; + case "-profile": + optionsBuilder.profile(getValue(flag, it, value)); + break; default: throw new IllegalArgumentException("unexpected flag: " + flag); } @@ -202,9 +195,9 @@ private static void expandParamsFiles(Iterable args, List expand } else if (arg.startsWith("@@")) { expanded.add(arg.substring(1)); } else { - Path path = Paths.get(arg.substring(1)); + Path path = Path.of(arg.substring(1)); try { - String sequence = new String(Files.readAllBytes(path), UTF_8); + String sequence = Files.readString(path); expandParamsFiles(ARG_SPLITTER.split(sequence), expanded); } catch (IOException e) { throw new UncheckedIOException(path + ": could not read file: " + e.getMessage(), e); @@ -212,4 +205,6 @@ private static void expandParamsFiles(Iterable args, List expand } } } + + private CommandLineOptionsParser() {} } diff --git a/core/src/main/java/com/google/googlejavaformat/java/Main.java b/core/src/main/java/com/google/googlejavaformat/java/Main.java index f1affa74d..b98d5c298 100644 --- a/core/src/main/java/com/google/googlejavaformat/java/Main.java +++ b/core/src/main/java/com/google/googlejavaformat/java/Main.java @@ -108,14 +108,14 @@ static int main(InputStream in, PrintWriter out, PrintWriter err, String... args */ public int format(String... args) throws UsageException { CommandLineOptions parameters = processArgs(args); + return format(parameters); + } + + int format(CommandLineOptions parameters) { if (parameters.version()) { errWriter.println(versionString()); return 0; } - if (parameters.help()) { - throw new UsageException(); - } - JavaFormatterOptions options = JavaFormatterOptions.builder() .style(parameters.aosp() ? Style.AOSP : Style.GOOGLE) @@ -278,6 +278,9 @@ public static CommandLineOptions processArgs(String... args) throws UsageExcepti if (parameters.dryRun() && parameters.inPlace()) { throw new UsageException("cannot use --dry-run and --in-place at the same time"); } + if (parameters.help()) { + throw new UsageException(); + } return parameters; } } diff --git a/core/src/test/java/com/google/googlejavaformat/java/CommandLineFlagsTest.java b/core/src/test/java/com/google/googlejavaformat/java/CommandLineFlagsTest.java index 928ce0078..cde7a17dc 100644 --- a/core/src/test/java/com/google/googlejavaformat/java/CommandLineFlagsTest.java +++ b/core/src/test/java/com/google/googlejavaformat/java/CommandLineFlagsTest.java @@ -107,7 +107,12 @@ public void numberOfOffsetsMustMatchNumberOfLengths() throws UsageException { public void noFilesToFormatRequiresEitherHelpOrVersion() throws UsageException { Main.processArgs("-version"); - Main.processArgs("-help"); + try { + Main.processArgs("-help"); + fail(); + } catch (UsageException e) { + // expected + } try { Main.processArgs();