Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/MercurialCommandLine.java @ 824:f86c06f4ab8a
MercurialCommandLine now delegates to GeneralCommandLine
author | eugene.petrenko@jetbrains.com |
---|---|
date | Fri, 30 May 2014 11:49:44 +0200 |
parents | 31a1aca3305c |
children | 5fbc0d51bea3 |
line wrap: on
line source
/* * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; import com.intellij.execution.configurations.GeneralCommandLine; import jetbrains.buildServer.util.StringUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.nio.charset.Charset; import java.util.*; public class MercurialCommandLine { private String myExePath; private final List<String> myArguments = new ArrayList<String>(); private final Map<String, String> myEnvPatch = new TreeMap<String, String>(); private String myWorkingDirectory; private final Set<String> myPrivateData; private Charset myCharset; public MercurialCommandLine() { this(Collections.<String>emptySet()); } public MercurialCommandLine(@NotNull final Set<String> privateData) { myPrivateData = privateData; } @NotNull public String getCommandLineString() { String original = toGeneralCommandLine().getCommandLineString(); return CommandUtil.removePrivateData(original, myPrivateData); } public void setExePath(@NotNull final String hgPath) { myExePath = hgPath; } public void addParameter(@NotNull final String parameter) { String escaped = escape(parameter); myArguments.add(escaped); } public void addParameters(@NotNull final Collection<String> argz) { for (String s : argz) { addParameter(s); } } public void addParameters(@NotNull final String... argz) { for (String s : argz) { addParameter(s); } } public void addParameters(@NotNull final String a, @NotNull final String b) { addParameter(a); addParameter(b); } public void setEnvParams(@NotNull final Map<String, String> hgEnv) { myEnvPatch.clear(); myEnvPatch.putAll(hgEnv); } @NotNull public Map<String, String> getEnvParams() { return new TreeMap<String, String>(myEnvPatch); } public void addEnvParam(@NotNull final String key, @NotNull final String value) { myEnvPatch.put(key, value); } public void setCharset(@NotNull Charset charset) { myCharset = charset; } public void setWorkDirectory(@NonNls String path) { myWorkingDirectory = path; } public String getWorkingDirectory() { return myWorkingDirectory; } private String escape(String s) { return StringUtil.escapeQuotesIfWindows(s); } @NotNull public GeneralCommandLine toGeneralCommandLine() { final GeneralCommandLine cmd = new GeneralCommandLine() { @Override public String getCommandLineParams() { return CommandUtil.removePrivateData(super.getCommandLineParams(), myPrivateData); } @Override public String getCommandLineString() { return CommandUtil.removePrivateData(super.getCommandLineString(), myPrivateData); } }; if (myExePath != null) { cmd.setExePath(myExePath); } if (myWorkingDirectory != null) { cmd.setWorkDirectory(myWorkingDirectory); } if (myCharset != null) { cmd.setCharset(myCharset); } for (String argument : myArguments) { cmd.addParameter(argument); } if (!myEnvPatch.isEmpty()) { cmd.setPassParentEnvs(true); cmd.setEnvParams(new TreeMap<String, String>(myEnvPatch)); } return cmd; } }