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) --- src/com/gitblit/GitServlet.java | 20 +++++++++++++------- 1 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/com/gitblit/GitServlet.java b/src/com/gitblit/GitServlet.java index 3b60e9f..68097cb 100644 --- a/src/com/gitblit/GitServlet.java +++ b/src/com/gitblit/GitServlet.java @@ -50,6 +50,8 @@ import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.ClientLogger; +import com.gitblit.utils.FileUtils; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.StringUtils; @@ -77,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); } @@ -165,7 +172,7 @@ scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository)); scripts.addAll(repository.preReceiveScripts); UserModel user = getUserModel(rp); - runGroovy(repository, user, commands, scripts); + runGroovy(repository, user, commands, rp, scripts); for (ReceiveCommand cmd : commands) { if (!Result.NOT_ATTEMPTED.equals(cmd.getResult())) { logger.warn(MessageFormat.format("{0} {1} because \"{2}\"", cmd.getNewId() @@ -193,7 +200,7 @@ scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository)); scripts.addAll(repository.postReceiveScripts); UserModel user = getUserModel(rp); - runGroovy(repository, user, commands, scripts); + runGroovy(repository, user, commands, rp, scripts); // Experimental // runNativeScript(rp, "hooks/post-receive", commands); @@ -207,9 +214,7 @@ */ protected RepositoryModel getRepositoryModel(ReceivePack rp) { Repository repository = rp.getRepository(); - String rootPath = GitBlit.getRepositoriesFolder().getAbsolutePath(); - String repositoryName = StringUtils.getRelativePath(rootPath, repository.getDirectory() - .getAbsolutePath()); + String repositoryName = FileUtils.getRelativePath(GitBlit.getRepositoriesFolder(), repository.getDirectory()); RepositoryModel model = GitBlit.self().getRepositoryModel(repositoryName); return model; } @@ -239,7 +244,7 @@ * @param scripts */ protected void runGroovy(RepositoryModel repository, UserModel user, - Collection<ReceiveCommand> commands, Set<String> scripts) { + Collection<ReceiveCommand> commands, ReceivePack rp, Set<String> scripts) { if (scripts == null || scripts.size() == 0) { // no Groovy scripts to execute return; @@ -252,6 +257,7 @@ binding.setVariable("commands", commands); binding.setVariable("url", gitblitUrl); binding.setVariable("logger", logger); + binding.setVariable("clientLogger", new ClientLogger(rp)); for (String script : scripts) { if (StringUtils.isEmpty(script)) { continue; -- Gitblit v1.9.1