
com.palantir.docker.compose.connection.ContainerName Maven / Gradle / Ivy
/*
* (c) Copyright 2016 Palantir Technologies Inc. All rights reserved.
*/
package com.palantir.docker.compose.connection;
import static java.util.stream.Collectors.joining;
import com.google.common.base.Splitter;
import java.util.Arrays;
import java.util.List;
import org.immutables.value.Value;
@Value.Immutable
public abstract class ContainerName {
public abstract String rawName();
public abstract String semanticName();
@Override
public String toString() {
return semanticName();
}
public static ContainerName fromPsLine(String psLine) {
List lineComponents = Splitter.on(" ").splitToList(psLine);
String rawName = lineComponents.get(0);
if (probablyCustomName(rawName)) {
return ImmutableContainerName.builder()
.rawName(rawName)
.semanticName(rawName)
.build();
}
String semanticName = withoutDirectory(withoutScaleNumber(rawName));
return ImmutableContainerName.builder()
.rawName(rawName)
.semanticName(semanticName)
.build();
}
private static boolean probablyCustomName(String rawName) {
return !(rawName.split("_").length >= 3);
}
private static String withoutDirectory(String rawName) {
return Arrays.stream(rawName.split("_"))
.skip(1)
.collect(joining("_"));
}
public static String withoutScaleNumber(String rawName) {
String[] components = rawName.split("_");
return Arrays.stream(components)
.limit(components.length - 1)
.collect(joining("_"));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy