package org.arquillian.cube.docker.junit.rule;
import org.arquillian.cube.docker.impl.client.CubeDockerConfiguration;
import org.arquillian.cube.docker.impl.client.CubeDockerConfigurationResolver;
import org.arquillian.cube.docker.impl.docker.DockerClientExecutor;
import org.arquillian.cube.docker.impl.util.Boot2Docker;
import org.arquillian.cube.docker.impl.util.CommandLineExecutor;
import org.arquillian.cube.docker.impl.util.DockerMachine;
import org.arquillian.cube.docker.impl.util.OperatingSystemResolver;
import org.arquillian.cube.docker.impl.util.Top;
import org.jboss.arquillian.core.api.Injector;
import java.util.HashMap;
import java.util.Map;
public class DockerClientInitializer {
public static DockerClientExecutor initialize() {
Injector injector = new Injector() {
@Override
public <T> T inject(T t) {
return t;
}
};
CubeDockerConfigurationResolver resolver = new CubeDockerConfigurationResolver(new Top(),
new DockerMachine(new CommandLineExecutor()),
new Boot2Docker(new CommandLineExecutor()),
new OperatingSystemResolver().currentOperatingSystem().getFamily());
final Map<String, String> config = resolver.resolve(new HashMap<>());
final CubeDockerConfiguration cubeDockerConfiguration = CubeDockerConfiguration.fromMap(config, injector);
return new DockerClientExecutor(cubeDockerConfiguration);
}
}