package fr.ens.biologie.genomique.eoulsan.util.process; import java.io.IOException; import java.net.URI; import java.util.HashSet; import java.util.List; import java.util.Set; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import fr.ens.biologie.genomique.eoulsan.util.ProcessUtils; /** * This class define a Docker client using the Docker command line. * @author Laurent Jourdren * @since 2.0 */ public class FallBackDockerClient implements DockerClient { @Override public void initialize(URI dockerConnectionURI) { // Nothing to do } @Override public DockerImageInstance createConnection(String dockerImage) { return new FallBackDockerImageInstance(dockerImage); } @Override public void close() { // Nothing to do } @Override public Set<String> listImageTags() throws IOException { Set<String> result = new HashSet<>(); String output = ProcessUtils.execToString("docker images"); Splitter lineSplitter = Splitter.on('\n'); Splitter fieldSplitter = com.google.common.base.Splitter.on(' ').omitEmptyStrings(); boolean first = true; for (String line : lineSplitter.split(output)) { if (first) { first = false; continue; } List<String> fields = Lists.newArrayList(fieldSplitter.split(line)); if (fields.size() >= 2) { String tagName = fields.get(0) + ':' + fields.get(1); if (!"<none>:<none>".equals(tagName)) { result.add(tagName); } } } return result; } }