Mercurial > hg > mercurial
view mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java @ 893:1558f8257474
gather progress only if command reports it
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 07 Nov 2014 16:05:09 +0100 |
parents | 771ae1b2f0b1 |
children | e467e67d5892 |
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.openapi.util.Pair; import jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialTemplate; import jetbrains.buildServer.util.StringUtil; import jetbrains.buildServer.vcs.VcsException; import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.ArrayList; import java.util.List; public class LoadDagCommand extends VcsRootCommand { private final MercurialTemplate myDagLogTemplate; private int myMaxDagNodesCount; public LoadDagCommand(@NotNull CommandSettings commandSettings, @NotNull String hgPath, @NotNull File workingDir, @NotNull AuthSettings authSettings, @NotNull MercurialTemplate dagLogTemplate) { super(commandSettings, hgPath, workingDir, authSettings); myDagLogTemplate = dagLogTemplate; } public void setMaxDagNodesCount(int maxDagNodesCount) { myMaxDagNodesCount = maxDagNodesCount; } @NotNull public List<Pair<String, String>> call() throws VcsException { return myDagLogTemplate.withTemplate(new MercurialTemplate.WithTemplate<List<Pair<String, String>>>() { @NotNull public List<Pair<String, String>> action(@NotNull File template) throws VcsException { final List<Pair<String, String>> edges = new ArrayList<Pair<String, String>>(); final MercurialCommandLine cli = createCommandLine(); cli.addParameter("log"); cli.addParameter("--style=" + template.getAbsolutePath()); if (myMaxDagNodesCount > 0) { cli.addParameters("--limit", String.valueOf(myMaxDagNodesCount)); } final CommandResult res = runCommand(cli); final String output = res.getStdout(); String fromNode = null; for (String line : StringUtil.splitByLines(output)) { final String[] revs = line.split(" "); if (revs.length == 0) continue; if (fromNode != null) { edges.add(Pair.create(fromNode, revs[0])); fromNode = null; } if (revs.length == 1) { fromNode = revs[0]; } else { edges.add(Pair.create(revs[0], revs[1])); if (revs.length == 3) { edges.add(Pair.create(revs[0], revs[2])); } } } return edges; } }); } @NotNull @Override protected String getDescription() { return "hg log <dag>"; } }