aboutsummaryrefslogtreecommitdiff
path: root/org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java
diff options
context:
space:
mode:
authorMarc R. Hoffmann <hoffmann@mountainminds.com>2017-05-25 00:53:18 +0200
committerEvgeny Mandrikov <Godin@users.noreply.github.com>2017-05-25 00:53:18 +0200
commit13f12d39db0b3c0ddc60124572e5d4f984be0255 (patch)
tree2e1ea16bf0675dfd83730f48ad48edf2e880df89 /org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java
parent10f3ff0dd010d647625ef5937f301126250267d0 (diff)
downloadjacoco-13f12d39db0b3c0ddc60124572e5d4f984be0255.tar.gz
Add Command Line Interface (#525)
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.java66
1 files changed, 66 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..d4262abc
--- /dev/null
+++ b/org.jacoco.cli/src/org/jacoco/cli/internal/commands/Merge.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * 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();
+ if (execfiles.isEmpty()) {
+ out.println("[WARN] No execution data files provided.");
+ } else {
+ for (final File file : execfiles) {
+ out.printf("[INFO] Loading execution data file %s.%n",
+ file.getAbsolutePath());
+ loader.load(file);
+ }
+ }
+ return loader;
+ }
+
+}