James Moger
2012-01-06 e36d4de3a9dc55359f3b54dbf06adc8209d1028c
WAR/Express builds now copy bundled push scripts to configured scripts folder
3 files modified
74 ■■■■■ changed files
build.xml 9 ●●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java 19 ●●●● patch | view | raw | blame | history
src/com/gitblit/utils/FileUtils.java 46 ●●●●● patch | view | raw | blame | history
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">
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();
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());
            }
        }
    }
}