blob: b4f58a7c2651d63e888a3666cb00eeb9f719bfe7 [file] [log] [blame]
/**
* Configuration for gradle idea.
*
* Inspired from the Gradle build.
*/
def appendNode(node, text) {
node.append(new XmlParser().parseText(text))
}
allprojects {
apply plugin: 'idea'
idea {
module.iml.withXml { provider ->
def node = provider.asNode()
// remove target classes from libraries
def moduleRoot = node.component.find { it.'@name' == 'NewModuleRootManager' }
def entries = moduleRoot.orderEntry.findAll { oe ->
oe.library.CLASSES.root.'@url' =~ /target/
}
if (entries) {
entries.each { moduleRoot.remove(it) }
}
}
}
}
idea {
project {
ipr {
withXml { provider ->
def node = provider.asNode()
// jdk, language level fix
def pRoot = node.component.find { it.'@name' == 'ProjectRootManager' }
pRoot.'@languageLevel' = 'JDK_1_5'
pRoot.'@project-jdk-name' = '1.7'
// Use git
def vcsConfig = node.component.find { it.'@name' == 'VcsDirectoryMappings' }
vcsConfig.mapping[0].'@vcs' = 'Git'
// license header
def copyrightManager = node.component.find { it.'@name' == 'CopyrightManager' }
copyrightManager.@default = 'ASL2'
def aslCopyright = copyrightManager.copyright.find { it.option.find { it.@name == 'myName' }?.@value == 'ASL2' }
if (aslCopyright == null) {
appendNode(copyrightManager, '''
<copyright>
<option name="notice" value="Copyright 2003-$today.year the original author or authors.&#10;&#10;Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);&#10;you may not use this file except in compliance with the License.&#10;You may obtain a copy of the License at&#10;&#10; http://www.apache.org/licenses/LICENSE-2.0&#10;&#10;Unless required by applicable law or agreed to in writing, software&#10;distributed under the License is distributed on an &quot;AS IS&quot; BASIS,&#10;WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&#10;See the License for the specific language governing permissions and&#10;limitations under the License." />
<option name="keyword" value="Copyright" />
<option name="allowReplaceKeyword" value="" />
<option name="myName" value="ASL2" />
<option name="myLocal" value="true" />
</copyright>
''')
}
def compilerConfig = node.component.find { it.@name == 'CompilerConfiguration' }
['/**/org.codehaus.groovy.runtime.ExtensionModule',
'*.jar',
'test-resources:/**/*.groovy','test-resources:/**/*.java',
'!?*.groovy',
'/groovy/inspect/swingui/AstBrowserProperties.groovy',
'/groovy/inspect/swingui/AstBrowserProperties.groovy',
'/**/org.codehaus.groovy.runtime.ExtensionModule;*.jar',
'/groovy/inspect/swingui/AstBrowserProperties.groovy',
'/**/org.codehaus.groovy.runtime.ExtensionModule',
'*.jar'].each {
appendNode(compilerConfig.wildcardResourcePatterns[0], "<entry name=\"$it\" />")
}
appendNode(compilerConfig,'''<excludeFromCompile>
<directory url="file://$PROJECT_DIR$/src/test-resources" includeSubdirectories="true" />
</excludeFromCompile>''')
}
}
}
workspace {
iws {
withXml { provider ->
def node = provider.asNode()
// exclude some files from stub generation
def groovyCompilerConfig = node.component.find { it.'@name' == 'GroovyCompilerConfiguration' }
if (!groovyCompilerConfig) {
node.append(new XmlParser().parseText('''
<component name='GroovyCompilerConfiguration'>
<excludes></excludes>
</component>'''))
groovyCompilerConfig = node.component.find { it.'@name' == 'GroovyCompilerConfiguration' }
}
def excludeNode = groovyCompilerConfig.excludes[0]
['/src/test/org/codehaus/groovy/transform/DelegateTransformTest.groovy',
'/src/test/groovy/bugs/Groovy593_Bug.groovy'].each { excludedFile ->
def url = "file://\$PROJECT_DIR\$$excludedFile"
if (!excludeNode.file.any { it.'@url' == url }) {
excludeNode.append(new XmlParser().parseText("<file url=\"$url\" />"))
}
}
// add sample configurations
def runmanager = node.component.find { it.'@name' == 'RunManager' }
appendNode(runmanager, '''<configuration default="false" name="Console" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" runner="idea">
<pattern>
<option name="PATTERN" value="groovy.ui.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<option name="MAIN_CLASS_NAME" value="groovy.ui.Console" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="groovy-console" />
<envs />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile ">
<option name="myExternalizedOptions" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
''')
appendNode(runmanager,'''<configuration default="false" name="groovy.transform.stc in groovy" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" runner="idea">
<pattern>
<option name="PATTERN" value="groovy.transform.stc.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="groovy" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="groovy.transform.stc" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile ">
<option name="myExternalizedOptions" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
''')
}
}
}
module.iml.withXml { provider ->
def node = provider.asNode()
// remove compiler classes from libraries
def moduleRoot = node.component.find { it.'@name' == 'NewModuleRootManager' }
def entry = moduleRoot.orderEntry.find { oe ->
oe.library.CLASSES.root.'@url' =~ /classes\/compiler/
}
if (entry) {
moduleRoot.remove(entry)
}
// add an entry for groovy jar
appendNode(moduleRoot, """
<orderEntry type="module-library" exported="">
<library>
<CLASSES>
<root url="jar://${rootProject.jar.archivePath}!/"/>
</CLASSES>
</library>
</orderEntry>
""")
}
tasks.withType(GenerateIdeaProject).all {
it.dependsOn(jar)
}
}