// Copyright 2015 Pants project contributors (see CONTRIBUTORS.md).
// Licensed under the Apache License, Version 2.0 (see LICENSE).
package com.twitter.intellij.pants.service.project.modifier;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.text.StringUtil;
import com.twitter.intellij.pants.service.PantsCompileOptionsExecutor;
import com.twitter.intellij.pants.service.project.PantsProjectInfoModifierExtension;
import com.twitter.intellij.pants.service.project.model.ProjectInfo;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.stream.Collectors;
public class PantsTargetNamesShortenerModifier implements PantsProjectInfoModifierExtension {
private static final int MAX_MODULE_NAME_LENGTH = 200;
@Override
public void modify(@NotNull ProjectInfo projectInfo, @NotNull PantsCompileOptionsExecutor executor, @NotNull Logger log) {
final List<String> longTargetNames = projectInfo.getTargets()
.keySet()
.stream()
.filter(s -> s.length() > MAX_MODULE_NAME_LENGTH)
.collect(Collectors.toList());
for (String targetName : longTargetNames) {
final String newTargetName = StringUtil.trimMiddle(targetName, MAX_MODULE_NAME_LENGTH);
log.info(targetName + " is too long! Will replace with " + newTargetName);
projectInfo.renameTarget(targetName, newTargetName);
}
}
}