GRAILS-1019: Allowing expressions to be used with the 'disabled' attribute for g...
[grails.git] / scripts / Shell.groovy
blob6f01a3fae582f2fe1ff0f54a26575d19b915edbe
1 /*
2 * Copyright 2004-2005 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 /**
18 * Gant script that loads the Grails interactive shell
20 * @author Graeme Rocher
22 * @since 0.4
25 import org.codehaus.groovy.grails.commons.GrailsClassUtils as GCU
26 import groovy.text.SimpleTemplateEngine
27 import org.codehaus.groovy.grails.support.*
28 import org.codehaus.groovy.tools.shell.*
30 Ant.property(environment:"env")
31 grailsHome = Ant.antProject.properties."env.GRAILS_HOME"
33 includeTargets << new File ( "${grailsHome}/scripts/Bootstrap.groovy" )
35 target ('default': "Load the Grails interactive shell") {
36 depends( configureProxy, packageApp, classpath )
37 shell()
40 target(shell:"The shell implementation target") {
42 classLoader = new URLClassLoader([classesDir.toURI().toURL()] as URL[], rootLoader)
43 Thread.currentThread().setContextClassLoader(classLoader)
44 loadApp()
45 configureApp()
46 def b = new Binding()
47 b.ctx = appCtx
48 b.grailsApplication = grailsApp
50 def original = Groovysh.metaClass.getMetaMethod("execute", [String] as Object[])
51 Groovysh.metaClass.execute = { String line ->
52 try {
53 def listeners = appCtx.getBeansOfType(PersistenceContextInterceptor)
54 listeners.each { k,v ->
55 v.init()
58 original.invoke(delegate, line)
59 listeners.each { k,v ->
60 v.flush()
63 finally {
64 listeners.each { k,v ->
65 v.destroy()
70 shell = new Groovysh(classLoader,b, new IO(System.in, System.out, System.err))
71 shell.run([] as String[])