From 67d4f89b0cddb3de05c20e08c20f1bea714c2a9e Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 18 Jun 2012 16:09:44 -0400 Subject: [PATCH] Added setting to control Groovy Grape folder (issue 91) --- docs/01_setup.mkd | 21 +++++++++++++++++++++ docs/04_releases.mkd | 2 ++ distrib/gitblit.properties | 7 +++++++ src/com/gitblit/GitServlet.java | 7 ++++++- 4 files changed, 36 insertions(+), 1 deletions(-) diff --git a/distrib/gitblit.properties b/distrib/gitblit.properties index 91b1c2b..f3e2ac1 100644 --- a/distrib/gitblit.properties +++ b/distrib/gitblit.properties @@ -151,6 +151,13 @@ # SINCE 0.8.0 groovy.scriptsFolder = groovy +# Specify the directory Grape uses for downloading libraries. +# http://groovy.codehaus.org/Grape +# +# RESTART REQUIRED +# SINCE 1.0.0 +groovy.grapeFolder = groovy/grape + # Scripts to execute on Pre-Receive. # # These scripts execute after an incoming push has been parsed and validated diff --git a/docs/01_setup.mkd b/docs/01_setup.mkd index c8cd09d..07f4b00 100644 --- a/docs/01_setup.mkd +++ b/docs/01_setup.mkd @@ -398,6 +398,27 @@ Hook contributions and improvements are welcome. +### Grapes + +*SINCE 1.0.0* + +[Grape](http://groovy.codehaus.org/Grape) lets you quickly add maven repository dependencies to your Groovy hook script. + +<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> + +%BEGINCODE% +// create and use a primitive array +import org.apache.commons.collections.primitives.ArrayIntList + +@Grab(group='commons-primitives', module='commons-primitives', version='1.0') +def createEmptyInts() { new ArrayIntList() } + +def ints = createEmptyInts() +ints.add(0, 42) +assert ints.size() == 1 +assert ints.get(0) == 42 +%ENDCODE% + ### Custom Fields *SINCE 1.0.0* diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd index a47c086..a281ffe 100644 --- a/docs/04_releases.mkd +++ b/docs/04_releases.mkd @@ -35,6 +35,8 @@ **New:** *git.packedGitMmap = false* - Added default access restriction. Applies to new repositories and repositories that have not been configured with Gitblit. (issue 88) **New:** *git.defaultAccessRestriction = NONE* +- 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. + **New:** *groovy.grapeFolder = groovy/grape* - Added LDAP User Service with many new *realm.ldap* keys (Github/jcrygier) - Added support for custom repository properties for Groovy hooks (Github/jcrygier) - Added script to facilitate proxy environment setup on Linux (Github/mragab) diff --git a/src/com/gitblit/GitServlet.java b/src/com/gitblit/GitServlet.java index 94042c7..68097cb 100644 --- a/src/com/gitblit/GitServlet.java +++ b/src/com/gitblit/GitServlet.java @@ -79,7 +79,12 @@ public void init(ServletConfig config) throws ServletException { groovyDir = GitBlit.getGroovyScriptsFolder(); try { - gse = new GroovyScriptEngine(groovyDir.getAbsolutePath()); + // set Grape root + File grapeRoot = new File(GitBlit.getString(Keys.groovy.grapeFolder, "groovy/grape")).getAbsoluteFile(); + grapeRoot.mkdirs(); + System.setProperty("grape.root", grapeRoot.getAbsolutePath()); + + gse = new GroovyScriptEngine(groovyDir.getAbsolutePath()); } catch (IOException e) { throw new ServletException("Failed to instantiate Groovy Script Engine!", e); } -- Gitblit v1.9.1