io.imqa.injector.BuildLocation Maven / Gradle / Ivy
package io.imqa.injector;
import java.io.File;
import java.util.ArrayList;
import io.imqa.injector.util.BuildOption;
import io.imqa.injector.util.PathBuilder;
import io.imqa.injector.util.StringUtil;
public class BuildLocation {
public static void addBuildLocation(String rootLocation, BuildOption.BUILD_LOCATION_TYPE locationType, BuildType buildType, ArrayList buildLocationList, Flavor flavor) {
PathBuilder builder = PathBuilder.getBuilder(rootLocation);
switch (locationType) {
case kotlin:
builder.addPath("/tmp/kotlin-classes");
if (!flavor.flavorName.equals("")) {
builder.addPath(flavor.flavorName + StringUtil.toCapitalize(buildType.typeName));
} else {
builder.addPath(buildType.typeName);
}
break;
case javacCompileClasses:
builder.addPath("/intermediates/javac");
if (!flavor.flavorName.equals("")) {
builder.addPath(flavor.flavorName + StringUtil.toCapitalize(buildType.typeName));
} else {
builder.addPath(buildType.typeName);
}
builder.addPath("compile" + StringUtil.toCapitalize(flavor.flavorName) + StringUtil.toCapitalize(buildType.typeName) + "JavaWithJavac")
.addPath("classes");
break;
case javacClasses:
builder.addPath("/intermediates/javac");
if (!flavor.flavorName.equals("")) {
builder.addPath(flavor.flavorName + StringUtil.toCapitalize(buildType.typeName));
} else {
builder.addPath(buildType.typeName);
}
builder.addPath("classes");
break;
case classes:
default:
builder.addPath("/intermediates/classes/");
if (!flavor.flavorName.equals("")) {
builder.addPath(flavor.flavorName + StringUtil.toCapitalize(buildType.typeName));
} else {
builder.addPath(buildType.typeName);
}
}
// File location it
buildLocationList.add(builder.toString());
}
public static void addInstantBuildLocation(String rootLocation, BuildType buildType, ArrayList buildLocationList, Flavor flavor) {
PathBuilder builder = PathBuilder.getBuilder(rootLocation)
.addPath("/intermediates/transforms/instantRun");
if (!flavor.flavorName.equals("")) {
builder.addPath(flavor.flavorName);
}
builder.addPath(buildType.typeName);
File dirs = new File(builder.toString());
if (dirs.exists()) {
File[] middleDirs = dirs.listFiles();
// 디렉토리 순회하며 발견한 클래스 Inject
if (middleDirs != null) {
for (File dir : middleDirs) {
buildLocationList.add(dir.getAbsolutePath());
}
}
}
}
}