diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2016-11-02 10:20:57 +0100 |
---|---|---|
committer | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2017-04-28 23:45:02 +0200 |
commit | d850ed49b22d2a0c84a3b317acec8df7e7159016 (patch) | |
tree | 1e58f1090d4c56f9c253321b37cc07b20e24ec8b /org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java | |
parent | 30bc8e190e9a90fc43f5f68c499062cd58db3ebe (diff) | |
download | jacoco-d850ed49b22d2a0c84a3b317acec8df7e7159016.tar.gz |
Github #525: Simple Command Line Interface
Diffstat (limited to 'org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java')
-rw-r--r-- | org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java b/org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java new file mode 100644 index 00000000..530285c8 --- /dev/null +++ b/org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors + * 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: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.cli.internal.commands; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; + +import org.jacoco.cli.internal.Command; +import org.jacoco.core.tools.ExecFileLoader; +import org.kohsuke.args4j.Argument; +import org.kohsuke.args4j.Option; + +/** + * The <code>merge</code> command. + */ +public class Merge extends Command { + + @Argument(usage = "list of JaCoCo *.exec files to read", metaVar = "<execfiles>") + List<File> execfiles = new ArrayList<File>(); + + @Option(name = "-destfile", usage = "file to write merged execution data to", metaVar = "<path>", required = true) + File destfile; + + @Override + public String description() { + return "Merges multiple exec files into a new one."; + } + + @Override + public int execute(final PrintWriter out, final PrintWriter err) + throws IOException { + final ExecFileLoader loader = loadExecutionData(out); + out.printf("[INFO] Writing execution data to %s.%n", + destfile.getAbsolutePath()); + loader.save(destfile, true); + return 0; + } + + private ExecFileLoader loadExecutionData(final PrintWriter out) + throws IOException { + final ExecFileLoader loader = new ExecFileLoader(); + for (final File file : execfiles) { + out.printf("[INFO] Loading execution data file %s.%n", + file.getAbsolutePath()); + loader.load(file); + } + return loader; + } + +} |