summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2012-01-06 17:20:59 -0500
committerJames Moger <james.moger@gitblit.com>2012-01-06 17:20:59 -0500
commite36d4de3a9dc55359f3b54dbf06adc8209d1028c (patch)
tree258d730e958eff0e9b8d526f874bc49254e32721 /src/com
parentcb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef (diff)
downloadgitblit-e36d4de3a9dc55359f3b54dbf06adc8209d1028c.tar.gz
gitblit-e36d4de3a9dc55359f3b54dbf06adc8209d1028c.zip
WAR/Express builds now copy bundled push scripts to configured scripts folder
Diffstat (limited to 'src/com')
-rw-r--r--src/com/gitblit/GitBlit.java19
-rw-r--r--src/com/gitblit/utils/FileUtils.java46
2 files changed, 63 insertions, 2 deletions
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index d7120569..ce3e16d6 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -452,7 +452,7 @@ public class GitBlit implements ServletContextListener {
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 @@ public class GitBlit implements ServletContextListener {
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 @@ public class GitBlit implements ServletContextListener {
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 73bef34f..29c9d0fe 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 @@ public class FileUtils {
}
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());
+ }
+ }
+ }
}