]> source.dussan.org Git - gitblit.git/commitdiff
Added setting to control Groovy Grape folder (issue 91)
authorJames Moger <james.moger@gitblit.com>
Mon, 18 Jun 2012 20:09:44 +0000 (16:09 -0400)
committerJames Moger <james.moger@gitblit.com>
Mon, 18 Jun 2012 20:09:44 +0000 (16:09 -0400)
distrib/gitblit.properties
docs/01_setup.mkd
docs/04_releases.mkd
src/com/gitblit/GitServlet.java

index 91b1c2b7b9e7e0fdde29052f8ffb953066807b5e..f3e2ac15b311d808fb6dea9335f051669201b2ce 100644 (file)
@@ -151,6 +151,13 @@ git.packedGitMmap = false
 # SINCE 0.8.0\r
 groovy.scriptsFolder = groovy\r
 \r
+# Specify the directory Grape uses for downloading libraries.\r
+# http://groovy.codehaus.org/Grape\r
+#\r
+# RESTART REQUIRED\r
+# SINCE 1.0.0\r
+groovy.grapeFolder = groovy/grape\r
+\r
 # Scripts to execute on Pre-Receive.\r
 #\r
 # These scripts execute after an incoming push has been parsed and validated\r
index c8cd09db52b09c3f70ca12f16290f4c053971434..07f4b00474fca72785db7fb3521573ec953d1e64 100644 (file)
@@ -398,6 +398,27 @@ Some sample scripts are included in the GO and WAR distributions to show you how
 \r
 Hook contributions and improvements are welcome.\r
 \r
+### Grapes\r
+\r
+*SINCE 1.0.0*\r
+\r
+[Grape](http://groovy.codehaus.org/Grape) lets you quickly add maven repository dependencies to your Groovy hook script.  \r
+\r
+<blockquote>Grape (The Groovy Adaptable Packaging Engine or Groovy Advanced Packaging Engine) is the infrastructure enabling the grab() calls in Groovy, a set of classes leveraging [Ivy](http://ant.apache.org/ivy) to allow for a repository driven module system for Groovy. This allows a developer to write a script with an essentially arbitrary library requirement, and ship just the script. Grape will, at runtime, download as needed and link the named libraries and all dependencies forming a transitive closure when the script is run from existing repositories such as Ibiblio, Codehaus, and java.net.</blockquote>\r
+\r
+%BEGINCODE%\r
+// create and use a primitive array\r
+import org.apache.commons.collections.primitives.ArrayIntList\r
+\r
+@Grab(group='commons-primitives', module='commons-primitives', version='1.0')\r
+def createEmptyInts() { new ArrayIntList() }\r
+\r
+def ints = createEmptyInts()\r
+ints.add(0, 42)\r
+assert ints.size() == 1\r
+assert ints.get(0) == 42\r
+%ENDCODE%\r
+\r
 ### Custom Fields\r
 \r
 *SINCE 1.0.0*\r
index a47c0861f15c3565c36633f846d5a0bbed4fa03b..a281ffe5903b7dab15ee64ab990508e8570af931 100644 (file)
@@ -35,6 +35,8 @@ Make sure to properly set *web.blobEncodings* before starting Gitblit if you are
     **New:** *git.packedGitMmap = false*  \r
 - Added default access restriction.  Applies to new repositories and repositories that have not been configured with Gitblit. (issue 88)  \r
     **New:** *git.defaultAccessRestriction = NONE*  \r
+- Added setting to control Groovy Grape root folder.  [Grape](http://groovy.codehaus.org/Grape) allows you to add Maven dependencies to your pre-/post-receive hook script classpath.  \r
+    **New:** *groovy.grapeFolder = groovy/grape*  \r
 - Added LDAP User Service with many new *realm.ldap* keys (Github/jcrygier)\r
 - Added support for custom repository properties for Groovy hooks (Github/jcrygier)\r
 - Added script to facilitate proxy environment setup on Linux (Github/mragab)\r
index 94042c70cf0fd53f086bbbe09e050dc982d3e2e7..68097cb8ae1a0d32a9455ff18e425255470351a8 100644 (file)
@@ -79,7 +79,12 @@ public class GitServlet extends org.eclipse.jgit.http.server.GitServlet {
        public void init(ServletConfig config) throws ServletException {\r
                groovyDir = GitBlit.getGroovyScriptsFolder();\r
                try {\r
-                       gse = new GroovyScriptEngine(groovyDir.getAbsolutePath());\r
+                       // set Grape root\r
+                       File grapeRoot = new File(GitBlit.getString(Keys.groovy.grapeFolder, "groovy/grape")).getAbsoluteFile();\r
+                       grapeRoot.mkdirs();\r
+                       System.setProperty("grape.root", grapeRoot.getAbsolutePath());\r
+                       \r
+                       gse = new GroovyScriptEngine(groovyDir.getAbsolutePath());                      \r
                } catch (IOException e) {\r
                        throw new ServletException("Failed to instantiate Groovy Script Engine!", e);\r
                }\r