|
14 | 14 |
|
15 | 15 | package com.google.googlejavaformat.java; |
16 | 16 |
|
17 | | -import com.google.auto.value.AutoValue; |
18 | 17 | import com.google.common.collect.ImmutableList; |
19 | 18 | import com.google.common.collect.ImmutableRangeSet; |
20 | 19 |
|
21 | | -/** Command line options for google-java-format. */ |
22 | | -@AutoValue |
23 | | -abstract class CommandLineOptions { |
| 20 | +/** |
| 21 | + * Command line options for google-java-format. |
| 22 | + * |
| 23 | + * <p>google-java-format doesn't depend on AutoValue, to allow AutoValue to depend on |
| 24 | + * google-java-format. |
| 25 | + */ |
| 26 | +final class CommandLineOptions { |
| 27 | + |
| 28 | + private final ImmutableList<String> files; |
| 29 | + private final boolean inPlace; |
| 30 | + private final ImmutableRangeSet<Integer> lines; |
| 31 | + private final ImmutableList<Integer> offsets; |
| 32 | + private final ImmutableList<Integer> lengths; |
| 33 | + private final boolean aosp; |
| 34 | + private final boolean version; |
| 35 | + private final boolean help; |
| 36 | + private final boolean stdin; |
| 37 | + private final boolean fixImportsOnly; |
| 38 | + private final boolean removeJavadocOnlyImports; |
| 39 | + |
| 40 | + CommandLineOptions( |
| 41 | + ImmutableList<String> files, |
| 42 | + boolean inPlace, |
| 43 | + ImmutableRangeSet<Integer> lines, |
| 44 | + ImmutableList<Integer> offsets, |
| 45 | + ImmutableList<Integer> lengths, |
| 46 | + boolean aosp, |
| 47 | + boolean version, |
| 48 | + boolean help, |
| 49 | + boolean stdin, |
| 50 | + boolean fixImportsOnly, |
| 51 | + boolean removeJavadocOnlyImports) { |
| 52 | + this.files = files; |
| 53 | + this.inPlace = inPlace; |
| 54 | + this.lines = lines; |
| 55 | + this.offsets = offsets; |
| 56 | + this.lengths = lengths; |
| 57 | + this.aosp = aosp; |
| 58 | + this.version = version; |
| 59 | + this.help = help; |
| 60 | + this.stdin = stdin; |
| 61 | + this.fixImportsOnly = fixImportsOnly; |
| 62 | + this.removeJavadocOnlyImports = removeJavadocOnlyImports; |
| 63 | + } |
24 | 64 |
|
25 | 65 | /** The files to format. */ |
26 | | - abstract ImmutableList<String> files(); |
| 66 | + ImmutableList<String> files() { |
| 67 | + return files; |
| 68 | + } |
27 | 69 |
|
28 | 70 | /** Format files in place. */ |
29 | | - abstract boolean inPlace(); |
| 71 | + boolean inPlace() { |
| 72 | + return inPlace; |
| 73 | + } |
30 | 74 |
|
31 | 75 | /** Line ranges to format. */ |
32 | | - abstract ImmutableRangeSet<Integer> lines(); |
| 76 | + ImmutableRangeSet<Integer> lines() { |
| 77 | + return lines; |
| 78 | + } |
33 | 79 |
|
34 | 80 | /** Character offsets for partial formatting, paired with {@code lengths}. */ |
35 | | - abstract ImmutableList<Integer> offsets(); |
| 81 | + ImmutableList<Integer> offsets() { |
| 82 | + return offsets; |
| 83 | + } |
36 | 84 |
|
37 | 85 | /** Partial formatting region lengths, paired with {@code offsets}. */ |
38 | | - abstract ImmutableList<Integer> lengths(); |
| 86 | + ImmutableList<Integer> lengths() { |
| 87 | + return lengths; |
| 88 | + } |
39 | 89 |
|
40 | 90 | /** Use AOSP style instead of Google Style (4-space indentation). */ |
41 | | - abstract boolean aosp(); |
| 91 | + boolean aosp() { |
| 92 | + return aosp; |
| 93 | + } |
42 | 94 |
|
43 | 95 | /** Print the version. */ |
44 | | - abstract boolean version(); |
| 96 | + boolean version() { |
| 97 | + return version; |
| 98 | + } |
45 | 99 |
|
46 | 100 | /** Print usage information. */ |
47 | | - abstract boolean help(); |
| 101 | + boolean help() { |
| 102 | + return help; |
| 103 | + } |
48 | 104 |
|
49 | 105 | /** Format input from stdin. */ |
50 | | - abstract boolean stdin(); |
| 106 | + boolean stdin() { |
| 107 | + return stdin; |
| 108 | + } |
51 | 109 |
|
52 | 110 | /** Fix imports, but do no formatting. */ |
53 | | - abstract boolean fixImportsOnly(); |
| 111 | + boolean fixImportsOnly() { |
| 112 | + return fixImportsOnly; |
| 113 | + } |
54 | 114 |
|
55 | 115 | /** |
56 | 116 | * When fixing imports, remove imports that are used only in javadoc and fully-qualify any |
57 | 117 | * {@code @link} tags referring to the imported types. |
58 | 118 | */ |
59 | | - abstract boolean removeJavadocOnlyImports(); |
| 119 | + boolean removeJavadocOnlyImports() { |
| 120 | + return removeJavadocOnlyImports; |
| 121 | + } |
60 | 122 |
|
61 | 123 | /** Returns true if partial formatting was selected. */ |
62 | 124 | boolean isSelection() { |
63 | 125 | return !lines().isEmpty() || !offsets().isEmpty() || !lengths().isEmpty(); |
64 | 126 | } |
65 | 127 |
|
66 | 128 | static Builder builder() { |
67 | | - return new AutoValue_CommandLineOptions.Builder() |
68 | | - .inPlace(false) |
69 | | - .aosp(false) |
70 | | - .version(false) |
71 | | - .help(false) |
72 | | - .stdin(false) |
73 | | - .fixImportsOnly(false) |
74 | | - .removeJavadocOnlyImports(false); |
| 129 | + return new Builder(); |
75 | 130 | } |
76 | 131 |
|
77 | | - @AutoValue.Builder |
78 | | - abstract static class Builder { |
79 | | - abstract Builder inPlace(boolean inPlace); |
80 | | - |
81 | | - abstract ImmutableList.Builder<String> filesBuilder(); |
82 | | - |
83 | | - abstract ImmutableRangeSet.Builder<Integer> linesBuilder(); |
84 | | - |
85 | | - abstract ImmutableList.Builder<Integer> offsetsBuilder(); |
86 | | - |
87 | | - abstract ImmutableList.Builder<Integer> lengthsBuilder(); |
88 | | - |
89 | | - abstract Builder aosp(boolean aosp); |
90 | | - |
91 | | - abstract Builder version(boolean version); |
92 | | - |
93 | | - abstract Builder help(boolean help); |
94 | | - |
95 | | - abstract Builder stdin(boolean stdin); |
96 | | - |
97 | | - abstract Builder fixImportsOnly(boolean fixImportsOnly); |
98 | | - |
99 | | - abstract Builder removeJavadocOnlyImports(boolean removeJavadocOnlyImports); |
100 | | - |
101 | | - abstract CommandLineOptions build(); |
| 132 | + static class Builder { |
| 133 | + |
| 134 | + private final ImmutableList.Builder<String> files = ImmutableList.builder(); |
| 135 | + private final ImmutableRangeSet.Builder<Integer> lines = ImmutableRangeSet.builder(); |
| 136 | + private final ImmutableList.Builder<Integer> offsets = ImmutableList.builder(); |
| 137 | + private final ImmutableList.Builder<Integer> lengths = ImmutableList.builder(); |
| 138 | + private Boolean inPlace = false; |
| 139 | + private Boolean aosp = false; |
| 140 | + private Boolean version = false; |
| 141 | + private Boolean help = false; |
| 142 | + private Boolean stdin = false; |
| 143 | + private Boolean fixImportsOnly = false; |
| 144 | + private Boolean removeJavadocOnlyImports = false; |
| 145 | + |
| 146 | + ImmutableList.Builder<String> filesBuilder() { |
| 147 | + return files; |
| 148 | + } |
| 149 | + |
| 150 | + Builder inPlace(boolean inPlace) { |
| 151 | + this.inPlace = inPlace; |
| 152 | + return this; |
| 153 | + } |
| 154 | + |
| 155 | + ImmutableRangeSet.Builder<Integer> linesBuilder() { |
| 156 | + return lines; |
| 157 | + } |
| 158 | + |
| 159 | + Builder addOffset(Integer offset) { |
| 160 | + offsets.add(offset); |
| 161 | + return this; |
| 162 | + } |
| 163 | + |
| 164 | + Builder addLength(Integer length) { |
| 165 | + lengths.add(length); |
| 166 | + return this; |
| 167 | + } |
| 168 | + |
| 169 | + Builder aosp(boolean aosp) { |
| 170 | + this.aosp = aosp; |
| 171 | + return this; |
| 172 | + } |
| 173 | + |
| 174 | + Builder version(boolean version) { |
| 175 | + this.version = version; |
| 176 | + return this; |
| 177 | + } |
| 178 | + |
| 179 | + Builder help(boolean help) { |
| 180 | + this.help = help; |
| 181 | + return this; |
| 182 | + } |
| 183 | + |
| 184 | + Builder stdin(boolean stdin) { |
| 185 | + this.stdin = stdin; |
| 186 | + return this; |
| 187 | + } |
| 188 | + |
| 189 | + Builder fixImportsOnly(boolean fixImportsOnly) { |
| 190 | + this.fixImportsOnly = fixImportsOnly; |
| 191 | + return this; |
| 192 | + } |
| 193 | + |
| 194 | + Builder removeJavadocOnlyImports(boolean removeJavadocOnlyImports) { |
| 195 | + this.removeJavadocOnlyImports = removeJavadocOnlyImports; |
| 196 | + return this; |
| 197 | + } |
| 198 | + |
| 199 | + CommandLineOptions build() { |
| 200 | + return new CommandLineOptions( |
| 201 | + this.files.build(), |
| 202 | + this.inPlace, |
| 203 | + this.lines.build(), |
| 204 | + this.offsets.build(), |
| 205 | + this.lengths.build(), |
| 206 | + this.aosp, |
| 207 | + this.version, |
| 208 | + this.help, |
| 209 | + this.stdin, |
| 210 | + this.fixImportsOnly, |
| 211 | + this.removeJavadocOnlyImports); |
| 212 | + } |
102 | 213 | } |
103 | 214 | } |
0 commit comments