You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2018/01/07 18:21:55 UTC
[11/26] commons-release-plugin git commit: Adding extra files
Adding extra files
Project: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/commit/7cc0bd92
Tree: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/tree/7cc0bd92
Diff: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/diff/7cc0bd92
Branch: refs/heads/master
Commit: 7cc0bd923a60bbb21aaabcae8e96da04d516f577
Parents: 1953878
Author: Rob Tompkins <ch...@gmail.com>
Authored: Mon Jan 1 15:34:51 2018 -0500
Committer: Rob Tompkins <ch...@gmail.com>
Committed: Mon Jan 1 15:34:51 2018 -0500
----------------------------------------------------------------------
.../commons/release/plugin/SharedFunctions.java | 42 +++++++++
.../plugin/handler/DistributionScmHandler.java | 11 +++
.../release/plugin/handler/package-info.java | 1 +
.../mojos/CommonsSiteCompressionMojo.java | 97 ++++++++++++++++++++
4 files changed, 151 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/7cc0bd92/src/main/java/org/apache/commons/release/plugin/SharedFunctions.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/release/plugin/SharedFunctions.java b/src/main/java/org/apache/commons/release/plugin/SharedFunctions.java
new file mode 100644
index 0000000..238d58b
--- /dev/null
+++ b/src/main/java/org/apache/commons/release/plugin/SharedFunctions.java
@@ -0,0 +1,42 @@
+package org.apache.commons.release.plugin;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.logging.Log;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Shared static functions for all of our Mojos
+ *
+ * @author chtompki
+ * @since 1.0
+ */
+public class SharedFunctions {
+
+ private SharedFunctions() {
+ //Uitility Class
+ }
+
+ /**
+ * Cleans and then initializes an empty directory that is given by the <code>workingDirectory</code>
+ * parameter.
+ *
+ * @param log is the maven log for output logging, particularly in regards to error management.
+ * @param workingDirectory is a {@link File} that represents the directory to first attempt to delete then create.
+ */
+ public static void initWorkingDirectory(Log log, File workingDirectory) throws MojoExecutionException {
+ if (workingDirectory.exists()) {
+ try {
+ FileUtils.deleteDirectory(workingDirectory);
+ } catch (IOException e) {
+ log.error(e.getMessage());
+ throw new MojoExecutionException("Unable to remove working directory: " + e.getMessage(), e);
+ }
+ }
+ if (!workingDirectory.exists()) {
+ workingDirectory.mkdirs();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/7cc0bd92/src/main/java/org/apache/commons/release/plugin/handler/DistributionScmHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/release/plugin/handler/DistributionScmHandler.java b/src/main/java/org/apache/commons/release/plugin/handler/DistributionScmHandler.java
new file mode 100644
index 0000000..0a841f9
--- /dev/null
+++ b/src/main/java/org/apache/commons/release/plugin/handler/DistributionScmHandler.java
@@ -0,0 +1,11 @@
+package org.apache.commons.release.plugin.handler;
+
+import java.io.File;
+
+public class DistributionScmHandler {
+
+ public void checkoutDirectory(String scmUrl, File checkoutRootDirectory) {
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/7cc0bd92/src/main/java/org/apache/commons/release/plugin/handler/package-info.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/release/plugin/handler/package-info.java b/src/main/java/org/apache/commons/release/plugin/handler/package-info.java
new file mode 100644
index 0000000..064b55a
--- /dev/null
+++ b/src/main/java/org/apache/commons/release/plugin/handler/package-info.java
@@ -0,0 +1 @@
+package org.apache.commons.release.plugin.handler;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/7cc0bd92/src/main/java/org/apache/commons/release/plugin/mojos/CommonsSiteCompressionMojo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/release/plugin/mojos/CommonsSiteCompressionMojo.java b/src/main/java/org/apache/commons/release/plugin/mojos/CommonsSiteCompressionMojo.java
new file mode 100644
index 0000000..5812061
--- /dev/null
+++ b/src/main/java/org/apache/commons/release/plugin/mojos/CommonsSiteCompressionMojo.java
@@ -0,0 +1,97 @@
+package org.apache.commons.release.plugin.mojos;
+
+import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator;
+import org.apache.commons.compress.archivers.zip.ScatterZipOutputStream;
+import org.apache.commons.release.plugin.SharedFunctions;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * Takes the built <code>./target/site</code> directory and compresses it to
+ * <code>./target/commons-release-plugin/site.zip</code>.
+ *
+ * @author chtompki
+ * @since 1.0
+ */
+@Mojo(name = "compress-site", defaultPhase = LifecyclePhase.POST_SITE, threadSafe = true)
+public class CommonsSiteCompressionMojo extends AbstractMojo {
+
+ @Parameter(defaultValue = "${project.build.directory}/commons-release-plugin", alias = "outputDirectory")
+ private File workingDirectory;
+
+ @Parameter(defaultValue = "${project.build.directory}/site", alias = "siteOutputDirectory")
+ private File siteDirectory;
+
+ private ScatterZipOutputStream dirs;
+
+ private ParallelScatterZipCreator scatterZipCreator;
+
+ private List<File> filesToCompress;
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ if (!workingDirectory.exists()) {
+ SharedFunctions.initWorkingDirectory(getLog(), workingDirectory);
+ }
+ try {
+ filesToCompress = new ArrayList<>();
+ getAllSiteFiles(siteDirectory, filesToCompress);
+ writeZipFile(workingDirectory, siteDirectory, filesToCompress);
+ } catch (IOException e) {
+ getLog().error("Failed to create ./target/commons-release-plugin/site.zip: " + e.getMessage(), e);
+ throw new MojoExecutionException("Failed to create ./target/commons-release-plugin/site.zip: " + e.getMessage(), e);
+ }
+ }
+
+ private void getAllSiteFiles(File siteDirectory, List<File> filesToCompress) throws IOException {
+ File[] files = siteDirectory.listFiles();
+ for (File file : files) {
+ filesToCompress.add(file);
+ if (file.isDirectory()) {
+ getAllSiteFiles(file, filesToCompress);
+ }
+ }
+ }
+
+ private void writeZipFile(File workingDirectory, File directoryToZip, List<File> fileList) throws IOException {
+ FileOutputStream fos = new FileOutputStream(workingDirectory.getAbsolutePath() + "/site.zip");
+ ZipOutputStream zos = new ZipOutputStream(fos);
+ for (File file : fileList) {
+ if (!file.isDirectory()) { // we only zip files, not directories
+ addToZip(directoryToZip, file, zos);
+ }
+ }
+ zos.close();
+ fos.close();
+ }
+
+ private void addToZip(File directoryToZip, File file, ZipOutputStream zos) throws IOException {
+ FileInputStream fis = new FileInputStream(file);
+ // we want the zipEntry's path to be a relative path that is relative
+ // to the directory being zipped, so chop off the rest of the path
+ String zipFilePath = file.getCanonicalPath().substring(directoryToZip.getCanonicalPath().length() + 1,
+ file.getCanonicalPath().length());
+ ZipEntry zipEntry = new ZipEntry(zipFilePath);
+ zos.putNextEntry(zipEntry);
+ byte[] bytes = new byte[1024];
+ int length;
+ while ((length = fis.read(bytes)) >= 0) {
+ zos.write(bytes, 0, length);
+ }
+ zos.closeEntry();
+ fis.close();
+ }
+}