1 package org
.codehaus
.groovy
.grails
.web
.servlet
.filter
;
2 class GrailsResourceCopier
implements ResourceCopier
{
5 String destdir
= "./web-app"
8 public void cleanControllers() {
9 def ant
= new AntBuilder()
10 if(new File("${basedir}/grails-app/controllers").exists()) {
12 fileset(dir
:"${destdir}/WEB-INF/grails-app/controllers",includes
:"*.groovy")
14 ant
.copy(todir
:"${destdir}/WEB-INF/grails-app/controllers",failonerror
:false) {
15 fileset(dir
:"${basedir}/grails-app/controllers",includes
:"**")
20 public void copyGrailsApp() {
21 def ant
= new AntBuilder()
22 if(new File("${basedir}/grails-app").exists()) {
23 ant
.copy(todir
:"${destdir}/WEB-INF/grails-app",failonerror
:false) {
24 fileset(dir
:"${basedir}/grails-app",includes
:"**")
29 public void copyViews(boolean shouldOverwrite
) {
30 def ant
= new AntBuilder()
31 if(new File("${basedir}/grails-app/views").exists()) {
32 ant
.copy(todir
:"${destdir}/WEB-INF/grails-app/views",failonerror
:false,overwrite
:shouldOverwrite
) {
33 fileset(dir
:"${basedir}/grails-app/views",includes
:"**")
38 public void copyViews() {
39 def ant
= new AntBuilder()
40 if(new File("${basedir}/grails-app/views").exists()) {
41 ant
.copy(todir
:"${destdir}/WEB-INF/grails-app/views",failonerror
:false) {
42 fileset(dir
:"${basedir}/grails-app/views",includes
:"**")
47 public void copyResourceBundles() {
48 def ant
= new AntBuilder()
49 if(new File("${basedir}/grails-app/i18n").exists()) {
50 ant
.native2ascii(src
:"${basedir}/grails-app/i18n",
51 dest
:"${destdir}/WEB-INF/grails-app/i18n",
52 includes
:"*.properties",
57 public void generateWebXml() {
58 def controllersHome
= new File("${basedir}/grails-app/controllers")
59 if(controllersHome
.exists()) {
60 println
"base directory exists re-creating web.xml"
63 controllersHome
.eachFileRecurse
{
64 def match
= it
.name
=~
"(\\w+)(Controller.groovy\$)"
66 def controllerName
= match
[0][1]
67 controllerName
= controllerName
[0].toLowerCase() + controllerName
[1..-1]
68 controllers
<< controllerName
70 match
= it
.name
=~
"(\\w+)(PageFlow.groovy\$)"
72 def flowName
= match
[0][1]
73 flowName
= flowName
[0].toLowerCase() + flowName
[1..-1]
77 def binding
= [ "controllers" : controllers
,
79 "basedir" : "${basedir}",
80 "destdir" : "${basedir}",
82 def engine
= new groovy
.text
.SimpleTemplateEngine()
83 def template
= engine
.createTemplate( new File("${basedir}/web-app/WEB-INF/web.template.xml" ).text
).make(binding
)
85 new File("${destdir}/WEB-INF/web.xml" ).write( template
.toString() )