diff options
author | Googler <noreply@google.com> | 2016-02-10 19:48:13 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-02-11 11:49:30 +0000 |
commit | 076f4ab33a9c2b4aee288e048b2fe9e4871bec07 (patch) | |
tree | c1e41b9a198a3c886f0a0ed3e96a740de069208d /src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java | |
parent | b8ffd10a65365a6202b510fe64d3546ebd1d6e25 (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.java | 116 |
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(); + } +} + |