From e36d4de3a9dc55359f3b54dbf06adc8209d1028c Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 06 Jan 2012 17:20:59 -0500 Subject: [PATCH] WAR/Express builds now copy bundled push scripts to configured scripts folder --- src/com/gitblit/GitBlit.java | 19 ++++++++- build.xml | 9 ++++ src/com/gitblit/utils/FileUtils.java | 46 +++++++++++++++++++++++ 3 files changed, 72 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index c704046..0d906ed 100644 --- a/build.xml +++ b/build.xml @@ -499,6 +499,15 @@ <copy tofile="${deployments.root}/WEB-INF/reference.properties" file="${basedir}/distrib/gitblit.properties"/> + <!-- Copy the supported Groovy hook scripts --> + <mkdir dir="${deployments.root}/WEB-INF/groovy" /> + <copy todir="${deployments.root}/WEB-INF/groovy"> + <fileset dir="${basedir}/groovy"> + <include name="sendmail.groovy" /> + <include name="jenkins.groovy" /> + </fileset> + </copy> + <!-- Build the WAR web.xml from the prototype web.xml and gitblit.properties --> <!-- THIS FILE IS NOT OVERRIDDEN ONCE IT IS BUILT!!! --> <java classpath="${project.build.dir}" classname="com.gitblit.build.BuildWebXml"> diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index d712056..ce3e16d 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -452,7 +452,7 @@ List<String> names = new ArrayList<String>(userService.getAllUsernames()); return names; } - + /** * Returns the list of all users available to the login service. * @@ -546,7 +546,7 @@ List<String> teams = new ArrayList<String>(userService.getAllTeamNames()); return teams; } - + /** * Returns the list of available teams that a user or repository may be * assigned to. @@ -1788,6 +1788,21 @@ webxmlSettings.applyOverrides(overrideFile); } configureContext(webxmlSettings, true); + + // Copy the included scripts to the configured groovy folder + File localScripts = getFileOrFolder(Keys.groovy.scriptsFolder, "groovy"); + if (!localScripts.exists()) { + File includedScripts = new File(context.getRealPath("/WEB-INF/groovy")); + if (!includedScripts.equals(localScripts)) { + try { + com.gitblit.utils.FileUtils.copy(localScripts, includedScripts.listFiles()); + } catch (IOException e) { + logger.error(MessageFormat.format( + "Failed to copy included Groovy scripts from {0} to {1}", + includedScripts, localScripts)); + } + } + } } serverStatus.servletContainer = servletContext.getServerInfo(); diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java index 73bef34..29c9d0f 100644 --- a/src/com/gitblit/utils/FileUtils.java +++ b/src/com/gitblit/utils/FileUtils.java @@ -15,11 +15,14 @@ */ package com.gitblit.utils; +import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.charset.Charset; @@ -103,4 +106,47 @@ } return length; } + + /** + * Copies a file or folder (recursively) to a destination folder. + * + * @param destinationFolder + * @param filesOrFolders + * @return + * @throws FileNotFoundException + * @throws IOException + */ + public static void copy(File destinationFolder, File... filesOrFolders) + throws FileNotFoundException, IOException { + destinationFolder.mkdirs(); + for (File file : filesOrFolders) { + if (file.isDirectory()) { + copy(new File(destinationFolder, file.getName()), file.listFiles()); + } else { + File dFile = new File(destinationFolder, file.getName()); + BufferedInputStream bufin = null; + FileOutputStream fos = null; + try { + bufin = new BufferedInputStream(new FileInputStream(file)); + fos = new FileOutputStream(dFile); + int len = 8196; + byte[] buff = new byte[len]; + int n = 0; + while ((n = bufin.read(buff, 0, len)) != -1) { + fos.write(buff, 0, n); + } + } finally { + try { + bufin.close(); + } catch (Throwable t) { + } + try { + fos.close(); + } catch (Throwable t) { + } + } + dFile.setLastModified(file.lastModified()); + } + } + } } -- Gitblit v1.9.1