package com.prezi.haxe.gradle;
import com.google.common.collect.Lists;
import com.prezi.haxe.gradle.incubating.BinaryNamingScheme;
import org.gradle.api.Nullable;
import java.util.List;
/*
* Copied from org.gradle.language.jvm.internal.ClassDirectoryBinaryNamingScheme.
*/
public class HaxeBinaryNamingScheme implements BinaryNamingScheme {
private final String parentName;
private final String collapsedName;
public HaxeBinaryNamingScheme(String parentName) {
this.parentName = parentName;
this.collapsedName = collapseMain(this.parentName);
}
private static String collapseMain(String name) {
return name.equals("main") ? "" : name;
}
public String getDescription() {
return String.format("%s binary", parentName);
}
public String getLifecycleTaskName() {
return getTaskName(null, null);
}
public String getTaskName(@Nullable String verb) {
return getTaskName(verb, null);
}
public String getTaskName(@Nullable String verb, @Nullable String target) {
return makeName(verb, collapsedName, target);
}
private static String makeName(String... words) {
StringBuilder builder = new StringBuilder();
for (String word : words) {
if (word == null || word.length() == 0) {
continue;
}
if (builder.length() == 0) {
appendUncapitalized(builder, word);
} else {
appendCapitalized(builder, word);
}
}
return builder.toString();
}
private static void appendCapitalized(StringBuilder builder, String word) {
builder.append(Character.toTitleCase(word.charAt(0))).append(word.substring(1));
}
private static void appendUncapitalized(StringBuilder builder, String word) {
builder.append(Character.toLowerCase(word.charAt(0))).append(word.substring(1));
}
public String getOutputDirectoryBase() {
return parentName;
}
@Override
public List<String> getVariantDimensions() {
return Lists.newArrayList();
}
}