/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.docker.compose; import java.util.HashMap; import java.util.Map; import java.util.Objects; /** * Describes how to build image for container creation. * * @author Alexander Garagatyi */ public class BuildContext { private String context; private String dockerfile; private Map<String, String> args; public BuildContext() {} public BuildContext(String context, String dockerfile, Map<String,String> args) { this.context = context; this.dockerfile = dockerfile; if (args != null) { this.args = new HashMap<>(args); } } public BuildContext(BuildContext buildContext) { this(buildContext.getContext(),buildContext.getDockerfile(), buildContext.getArgs()); } /** * Build context. * * <p/>Can be git repository, url to Dockerfile. */ public String getContext() { return context; } public void setContext(String context) { this.context = context; } public BuildContext withContext(String context) { this.context = context; return this; } /** * Alternate Dockerfile. * * <p/> Needed if dockerfile has non-default name or is not placed in the root of build context. */ public String getDockerfile() { return dockerfile; } public void setDockerfile(String dockerfile) { this.dockerfile = dockerfile; } public BuildContext withDockerfile(String dockerfile) { this.dockerfile = dockerfile; return this; } /** * Args for Dockerfile build. */ public Map<String,String> getArgs() { if (args == null) { args = new HashMap<>(); } return args; } public void setArgs(Map<String,String> args) { this.args = args; } public BuildContext withArgs(Map<String,String> args) { this.args = args; return this; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof BuildContext)) return false; BuildContext that = (BuildContext)o; return Objects.equals(context, that.context) && Objects.equals(dockerfile, that.dockerfile) && Objects.equals(args, that.args); } @Override public int hashCode() { return Objects.hash(context, dockerfile, args); } @Override public String toString() { return "BuildContext{" + "context='" + context + '\'' + ", dockerfile='" + dockerfile + '\'' + ", args='" + args + '\'' + '}'; } }