aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-02-10 19:48:13 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-02-11 11:49:30 +0000
commit076f4ab33a9c2b4aee288e048b2fe9e4871bec07 (patch)
treec1e41b9a198a3c886f0a0ed3e96a740de069208d /src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java
parentb8ffd10a65365a6202b510fe64d3546ebd1d6e25 (diff)
Adds an AaptCommandLineBuilder to simplify the aapt line building process.
Part of this change makes the --no-version-vectors only be propagated if the sdk tools are >= 23. -- MOS_MIGRATED_REVID=114351246
Diffstat (limited to 'src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java b/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java
new file mode 100644
index 0000000000..83591e73d5
--- /dev/null
+++ b/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java
@@ -0,0 +1,116 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.android;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.ImmutableList;
+
+import com.android.builder.core.VariantConfiguration.Type;
+import com.android.sdklib.repository.FullRevision;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.annotation.Nullable;
+
+class AaptCommandBuilder {
+ private final Path aapt;
+ private final String command;
+ private final List<String> flags = new ArrayList<>();
+ private final FullRevision buildToolsVersion;
+ private final Type variantType;
+
+ AaptCommandBuilder(
+ Path aapt, @Nullable FullRevision buildToolsVersion, Type variantType, String command) {
+ this.aapt = aapt;
+ this.buildToolsVersion = buildToolsVersion;
+ this.variantType = variantType;
+ this.command = command;
+ }
+
+ AaptCommandBuilder add(String flag) {
+ flags.add(flag);
+ return this;
+ }
+
+ AaptCommandBuilder add(String flag, @Nullable String value) {
+ if (!Strings.isNullOrEmpty(value)) {
+ flags.add(flag);
+ flags.add(value);
+ }
+ return this;
+ }
+
+ AaptCommandBuilder add(String flag, @Nullable Path path) {
+ if (path != null) {
+ add(flag, path.toString());
+ }
+ return this;
+ }
+
+ AaptCommandBuilder addRepeated(String flag, Collection<String> values) {
+ for (String value : values) {
+ add(flag, value);
+ }
+ return this;
+ }
+
+
+ AaptCommandBuilder maybeAdd(String flag, boolean condition) {
+ if (condition) {
+ add(flag);
+ }
+ return this;
+ }
+
+ AaptCommandBuilder maybeAdd(String flag, Path directory, boolean condition) {
+ if (condition) {
+ add(flag, directory);
+ }
+ return this;
+ }
+
+ AaptCommandBuilder maybeAdd(String flag, FullRevision requiredVersion) {
+ if (buildToolsVersion == null || buildToolsVersion.compareTo(requiredVersion) >= 0) {
+ add(flag);
+ }
+ return this;
+ }
+
+ AaptCommandBuilder maybeAdd(String flag, Type variant) {
+ if (variantType == variant) {
+ add(flag);
+ }
+ return this;
+ }
+
+ AaptCommandBuilder maybeAdd(String flag, @Nullable String value, Type variant) {
+ if (variantType == variant) {
+ add(flag, value);
+ }
+ return this;
+ }
+
+ List<String> build() {
+ return ImmutableList
+ .<String>builder()
+ .add(aapt.toString())
+ .add(command)
+ .addAll(flags)
+ .build();
+ }
+}
+