PageRenderTime 62ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/config/gradle/ide.gradle

http://github.com/MovingBlocks/Terasology
Gradle | 631 lines | 555 code | 36 blank | 40 comment | 0 complexity | da86d642bb3b09bc8086042bf8853f77 MD5 | raw file
Possible License(s): Apache-2.0
  1. // Stuff specific to IDEA IntelliJ setup - meant to be included by more central Gradle files
  2. //apply from: "$rootDir/config/gradle/common.gradle"
  3. apply plugin: 'idea'
  4. ext {
  5. // Activate Checkstyle config
  6. ideaActivateCheckstyle = { Node iprNode ->
  7. // Even if the component already exists this'll just overwrite it - shouldn't duplicate
  8. def checkstyle = iprNode.appendNode('component', [name: 'CheckStyle-IDEA'])
  9. // use NodeBuilder to create the config block in the xml structure
  10. def builder = new NodeBuilder()
  11. def option = builder.option(name: 'configuration') {
  12. map {
  13. entry(key: 'active-configuration',
  14. value: 'PROJECT_RELATIVE:$PROJECT_DIR$/config/metrics/checkstyle/checkstyle.xml:Terasology CheckStyle')
  15. entry(key: 'check-nonjava-files', value: false)
  16. entry(key: 'check-test-classes', value: true)
  17. entry(key: 'location-0',
  18. value: 'CLASSPATH:/sun_checks.xml:The default CheckStyle rules')
  19. entry(key: 'location-1',
  20. value: 'PROJECT_RELATIVE:$PROJECT_DIR$/config/metrics/checkstyle/checkstyle.xml:Terasology CheckStyle')
  21. entry(key: 'property-1.samedir', value: 'config/metrics/checkstyle')
  22. entry(key: 'suppress-errors', value: false)
  23. entry(key: 'thirdparty-classpath', value: '')
  24. }
  25. }
  26. // Add result from NodeBuilder
  27. checkstyle.append option
  28. }
  29. // Activate copyright conventions
  30. ideaActivateCopyright = { Node iprNode ->
  31. // Setup copyright statement injection
  32. def copyrightManager = iprNode.find { it.@name == 'CopyrightManager' }
  33. copyrightManager.@default = "TerasologyEngine"
  34. def copyright = copyrightManager.appendNode("copyright")
  35. copyright.appendNode("option", [name: "notice", value: 'Copyright ' + Calendar.getInstance().get(Calendar.YEAR) + ' MovingBlocks\n\nLicensed under the Apache License, Version 2.0 (the "License");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an "AS IS" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.'])
  36. copyright.appendNode("option", [name: "keyword", value: "Copyright"])
  37. copyright.appendNode("option", [name: "allowReplaceKeyword", value: ""])
  38. copyright.appendNode("option", [name: "myName", value: "TerasologyEngine"])
  39. copyright.appendNode("option", [name: "myLocal", value: "true"])
  40. def langOptions = copyrightManager.appendNode("LanguageOptions", [name: "__TEMPLATE__"])
  41. langOptions.appendNode("option", [name: "addBlankAfter", value: "false"])
  42. }
  43. // Activate special cases for annotations
  44. ideaActivateAnnotations = { Node iprNode ->
  45. // Setup knowledge of certain annotations being entry points (so don't mark annotated items as unused)
  46. def entryPointsManager = iprNode.appendNode('component', [name: "EntryPointsManager"])
  47. def entryPoints = entryPointsManager.appendNode('entry_points', [version: '2.0'])
  48. def entryPointsList = entryPointsManager.appendNode('list', [size: '4'])
  49. entryPointsList.appendNode('item', [index: '0', class: 'java.lang.String', itemvalue: 'org.terasology.entitySystem.event.ReceiveEvent'])
  50. entryPointsList.appendNode('item', [index: '1', class: 'java.lang.String', itemvalue: 'org.terasology.registry.In'])
  51. entryPointsList.appendNode('item', [index: '2', class: 'java.lang.String', itemvalue: 'org.terasology.entitySystem.systems.RegisterSystem'])
  52. entryPointsList.appendNode('item', [index: '3', class: 'java.lang.String', itemvalue: 'org.terasology.logic.console.Command'])
  53. def writeAnnotations = entryPointsManager.appendNode("writeAnnotations")
  54. writeAnnotations.appendNode("writeAnnotation", [name: "org.terasology.registry.In"])
  55. }
  56. // Activate Git for the root + appropriate sub projects (may add more later)
  57. ideaActivateGit = { Node iprNode ->
  58. // Set root project to use Git
  59. def vcsMappings = iprNode.component.find { it.@name == 'VcsDirectoryMappings' }
  60. vcsMappings.mapping.@vcs = 'Git'
  61. // Set Terasology "modules" to use Git (also: huh, this works and both prints and does stuff - handy!)
  62. //println "Each module child project (for Git auto-enable): " +
  63. rootProject.project(':modules').childProjects.each { child ->
  64. if (child.value.path == ':modules:BuilderSampleGameplay') {
  65. println "Skipping IntelliJ Git setup for internal module: " + child.value.path
  66. } else {
  67. println "Preparing IntelliJ Git setup for module $child.value.name"
  68. vcsMappings.appendNode('mapping', [
  69. 'directory': "\$PROJECT_DIR\$" + child.value.path.replace(':', '/'),
  70. 'vcs' : 'Git'
  71. ])
  72. }
  73. }
  74. // Set Terasology "facades" to use Git (except the bundled "PC" facade - that's covered by the root project)
  75. rootProject.project(':facades').childProjects.each { child ->
  76. if (child.value.path == ':facades:PC' || child.value.path == ':facades:TeraEd') {
  77. println "Skipping IntelliJ Git setup for 'PC' or 'TeraEd' facade (internal)"
  78. } else {
  79. println "Preparing IntelliJ Git setup for facade $child.value.name"
  80. vcsMappings.appendNode('mapping', [
  81. 'directory': "\$PROJECT_DIR\$" + child.value.path.replace(':', '/'),
  82. 'vcs' : 'Git'
  83. ])
  84. }
  85. }
  86. // Set Terasology related libraries to use Git
  87. rootProject.project(':libs').childProjects.each { child ->
  88. println "Preparing IntelliJ Git setup for lib $child.value.name"
  89. vcsMappings.appendNode('mapping', [
  90. 'directory': "\$PROJECT_DIR\$" + child.value.path.replace(':', '/'),
  91. 'vcs' : 'Git'
  92. ])
  93. }
  94. // Special case for the "Index" lib if present - not a standard Java project but still under Git control
  95. File indexLibDir = new File(rootDir, "libs/Index")
  96. if (indexLibDir.exists() && indexLibDir.isDirectory()) {
  97. println "Preparing IntelliJ Git setup for Index lib"
  98. vcsMappings.appendNode('mapping', [
  99. 'directory': "\$PROJECT_DIR\$" + "/libs/Index",
  100. 'vcs' : 'Git'
  101. ])
  102. }
  103. // Set meta-modules to use Git
  104. rootProject.project(':metas').childProjects.each { child ->
  105. println "Preparing IntelliJ Git setup for meta-module $child.value.name"
  106. vcsMappings.appendNode('mapping', [
  107. 'directory': "\$PROJECT_DIR\$" + child.value.path.replace(':', '/'),
  108. 'vcs' : 'Git'
  109. ])
  110. }
  111. }
  112. // Activate 'Gradle' plugin - TODO: Doesn't actually work with the Gradle wrapper in a non-default location :-(
  113. ideaActivateGradle = { Node iprNode ->
  114. def gradleSettings = iprNode.component.find { it.@name == 'GradleSettings' }
  115. if (gradleSettings == null) {
  116. gradleSettings = iprNode.appendNode('component', [name: 'GradleSettings'])
  117. gradleSettings.appendNode('option', [name: 'linkedProjectPath', value: '$PROJECT_DIR$/build.gradle'])
  118. }
  119. }
  120. // Enable "make project automatically"
  121. ideaMakeAutomatically = { Node iwsNode ->
  122. def compilerWsConf = iwsNode.find { it.@name == 'CompilerWorkspaceConfiguration' }
  123. // Slowly realizing the XML stuff is smart enough to not insert dupes even without an if, but .. scary!
  124. if (compilerWsConf == null) {
  125. compilerWsConf = iwsNode.appendNode('component', [name: 'CompilerWorkspaceConfiguration'])
  126. compilerWsConf.appendNode("option", [name: "MAKE_PROJECT_ON_SAVE", value: "true"])
  127. }
  128. }
  129. // Generate a run configuration for the primary PC facade way of running the game
  130. ideaRunConfig = { Node iwsNode ->
  131. // Add our run configs - this one launches with homedir set to local and the Crash Reporter off
  132. def runManager = iwsNode.find { it.@name == 'RunManager' }
  133. // TODO: Probably should make these run config blocks generic already ...
  134. runManager.append(new XmlParser().parseText('''
  135. <configuration default="false" name="TerasologyPC" type="Application" factoryName="Application">
  136. <extension name="coverage" enabled="false" merge="false" runner="idea">
  137. <pattern>
  138. <option name="PATTERN" value="org.terasology.engine.*"/>
  139. <option name="ENABLED" value="true"/>
  140. </pattern>
  141. </extension>
  142. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  143. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  144. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport"/>
  145. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  146. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  147. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  148. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  149. <option name="ENV_VARIABLES"/>
  150. <option name="PASS_PARENT_ENVS" value="true"/>
  151. <module name="PC"/>
  152. <envs/>
  153. <RunnerSettings RunnerId="Debug">
  154. <option name="DEBUG_PORT" value=""/>
  155. <option name="TRANSPORT" value="0"/>
  156. <option name="LOCAL" value="true"/>
  157. </RunnerSettings>
  158. <RunnerSettings RunnerId="Run"/>
  159. <ConfigurationWrapper RunnerId="Debug"/>
  160. <ConfigurationWrapper RunnerId="Run"/>
  161. <method/>
  162. </configuration>
  163. '''))
  164. runManager.append(new XmlParser().parseText('''
  165. <configuration default="false" name="TerasologyPC (EXTREME 8GB)" type="Application" factoryName="Application">
  166. <extension name="coverage" enabled="false" merge="false" runner="idea">
  167. <pattern>
  168. <option name="PATTERN" value="org.terasology.engine.*"/>
  169. <option name="ENABLED" value="true"/>
  170. </pattern>
  171. </extension>
  172. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  173. <option name="VM_PARAMETERS" value="-Xms256m -Xmx8192m"/>
  174. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport"/>
  175. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  176. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  177. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  178. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  179. <option name="ENV_VARIABLES"/>
  180. <option name="PASS_PARENT_ENVS" value="true"/>
  181. <module name="PC"/>
  182. <envs/>
  183. <RunnerSettings RunnerId="Debug">
  184. <option name="DEBUG_PORT" value=""/>
  185. <option name="TRANSPORT" value="0"/>
  186. <option name="LOCAL" value="true"/>
  187. </RunnerSettings>
  188. <RunnerSettings RunnerId="Run"/>
  189. <ConfigurationWrapper RunnerId="Debug"/>
  190. <ConfigurationWrapper RunnerId="Run"/>
  191. <method/>
  192. </configuration>
  193. '''))
  194. // Run config for a client with activated Java FlightRecorder recording. Recording will be dumped when the application is closed
  195. runManager.append(new XmlParser().parseText('''
  196. <configuration default="false" name="TerasologyPC (Java FlightRecorder)" type="Application" factoryName="Application">
  197. <extension name="coverage" enabled="false" merge="false" runner="idea">
  198. <pattern>
  199. <option name="PATTERN" value="org.terasology.engine.*"/>
  200. <option name="ENABLED" value="true"/>
  201. </pattern>
  202. </extension>
  203. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  204. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:StartFlightRecording=filename=terasology.jfr,dumponexit=true"/>
  205. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport"/>
  206. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  207. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  208. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  209. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  210. <option name="ENV_VARIABLES"/>
  211. <option name="PASS_PARENT_ENVS" value="true"/>
  212. <module name="PC"/>
  213. <envs/>
  214. <RunnerSettings RunnerId="Debug">
  215. <option name="DEBUG_PORT" value=""/>
  216. <option name="TRANSPORT" value="0"/>
  217. <option name="LOCAL" value="true"/>
  218. </RunnerSettings>
  219. <RunnerSettings RunnerId="Run"/>
  220. <ConfigurationWrapper RunnerId="Debug"/>
  221. <ConfigurationWrapper RunnerId="Run"/>
  222. <method/>
  223. </configuration>
  224. '''))
  225. // Run config for a second client in its own data dir (for easy multiplayer testing)
  226. runManager.append(new XmlParser().parseText('''
  227. <configuration default="false" name="TerasologyPC (2nd client)" type="Application" factoryName="Application">
  228. <extension name="coverage" enabled="false" merge="false" runner="idea">
  229. <pattern>
  230. <option name="PATTERN" value="org.terasology.engine.*"/>
  231. <option name="ENABLED" value="true"/>
  232. </pattern>
  233. </extension>
  234. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  235. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  236. <option name="PROGRAM_PARAMETERS" value="-homedir=terasology-2ndclient -noCrashReport"/>
  237. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  238. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  239. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  240. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  241. <option name="ENV_VARIABLES"/>
  242. <option name="PASS_PARENT_ENVS" value="true"/>
  243. <module name="PC"/>
  244. <envs/>
  245. <RunnerSettings RunnerId="Debug">
  246. <option name="DEBUG_PORT" value=""/>
  247. <option name="TRANSPORT" value="0"/>
  248. <option name="LOCAL" value="true"/>
  249. </RunnerSettings>
  250. <RunnerSettings RunnerId="Run"/>
  251. <ConfigurationWrapper RunnerId="Debug"/>
  252. <ConfigurationWrapper RunnerId="Run"/>
  253. <method/>
  254. </configuration>
  255. '''))
  256. // Run config for a *third* client in its own data dir (for more extensive multiplayer testing)
  257. runManager.append(new XmlParser().parseText('''
  258. <configuration default="false" name="TerasologyPC (3rd client)" type="Application" factoryName="Application">
  259. <extension name="coverage" enabled="false" merge="false" runner="idea">
  260. <pattern>
  261. <option name="PATTERN" value="org.terasology.engine.*"/>
  262. <option name="ENABLED" value="true"/>
  263. </pattern>
  264. </extension>
  265. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  266. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  267. <option name="PROGRAM_PARAMETERS" value="-homedir=terasology-3rdclient -noCrashReport"/>
  268. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  269. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  270. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  271. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  272. <option name="ENV_VARIABLES"/>
  273. <option name="PASS_PARENT_ENVS" value="true"/>
  274. <module name="PC"/>
  275. <envs/>
  276. <RunnerSettings RunnerId="Debug">
  277. <option name="DEBUG_PORT" value=""/>
  278. <option name="TRANSPORT" value="0"/>
  279. <option name="LOCAL" value="true"/>
  280. </RunnerSettings>
  281. <RunnerSettings RunnerId="Run"/>
  282. <ConfigurationWrapper RunnerId="Debug"/>
  283. <ConfigurationWrapper RunnerId="Run"/>
  284. <method/>
  285. </configuration>
  286. '''))
  287. // Run config that includes the Crash Reporter
  288. runManager.append(new XmlParser().parseText('''
  289. <configuration default="false" name="TerasologyPC (CR enabled)" type="Application" factoryName="Application">
  290. <extension name="coverage" enabled="false" merge="false" runner="idea">
  291. <pattern>
  292. <option name="PATTERN" value="org.terasology.engine.*"/>
  293. <option name="ENABLED" value="true"/>
  294. </pattern>
  295. </extension>
  296. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  297. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  298. <option name="PROGRAM_PARAMETERS" value="-homedir"/>
  299. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  300. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  301. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  302. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  303. <option name="ENV_VARIABLES"/>
  304. <option name="PASS_PARENT_ENVS" value="true"/>
  305. <module name="PC"/>
  306. <envs/>
  307. <RunnerSettings RunnerId="Debug">
  308. <option name="DEBUG_PORT" value=""/>
  309. <option name="TRANSPORT" value="0"/>
  310. <option name="LOCAL" value="true"/>
  311. </RunnerSettings>
  312. <RunnerSettings RunnerId="Run"/>
  313. <ConfigurationWrapper RunnerId="Debug"/>
  314. <ConfigurationWrapper RunnerId="Run"/>
  315. <method/>
  316. </configuration>
  317. '''))
  318. // Run config that disables the splash screen
  319. runManager.append(new XmlParser().parseText('''
  320. <configuration default="false" name="TerasologyPC (Splash disabled)" type="Application" factoryName="Application">
  321. <extension name="coverage" enabled="false" merge="false" runner="idea">
  322. <pattern>
  323. <option name="PATTERN" value="org.terasology.engine.*"/>
  324. <option name="ENABLED" value="true"/>
  325. </pattern>
  326. </extension>
  327. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  328. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  329. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport -noSplash"/>
  330. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  331. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  332. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  333. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  334. <option name="ENV_VARIABLES"/>
  335. <option name="PASS_PARENT_ENVS" value="true"/>
  336. <module name="PC"/>
  337. <envs/>
  338. <RunnerSettings RunnerId="Debug">
  339. <option name="DEBUG_PORT" value=""/>
  340. <option name="TRANSPORT" value="0"/>
  341. <option name="LOCAL" value="true"/>
  342. </RunnerSettings>
  343. <RunnerSettings RunnerId="Run"/>
  344. <ConfigurationWrapper RunnerId="Debug"/>
  345. <ConfigurationWrapper RunnerId="Run"/>
  346. <method/>
  347. </configuration>
  348. '''))
  349. // Run config for loading straight to the last save (skipping main menu)
  350. runManager.append(new XmlParser().parseText('''
  351. <configuration default="false" name="TerasologyPC (load latest)" type="Application" factoryName="Application">
  352. <extension name="coverage" enabled="false" merge="false" runner="idea">
  353. <pattern>
  354. <option name="PATTERN" value="org.terasology.engine.*"/>
  355. <option name="ENABLED" value="true"/>
  356. </pattern>
  357. </extension>
  358. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  359. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  360. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport -loadlastgame"/>
  361. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  362. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  363. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  364. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  365. <option name="ENV_VARIABLES"/>
  366. <option name="PASS_PARENT_ENVS" value="true"/>
  367. <module name="PC"/>
  368. <envs/>
  369. <RunnerSettings RunnerId="Debug">
  370. <option name="DEBUG_PORT" value=""/>
  371. <option name="TRANSPORT" value="0"/>
  372. <option name="LOCAL" value="true"/>
  373. </RunnerSettings>
  374. <RunnerSettings RunnerId="Run"/>
  375. <ConfigurationWrapper RunnerId="Debug"/>
  376. <ConfigurationWrapper RunnerId="Run"/>
  377. <method/>
  378. </configuration>
  379. '''))
  380. // Run config for running the game without world saving enabled
  381. runManager.append(new XmlParser().parseText('''
  382. <configuration default="false" name="TerasologyPC (no saves)" type="Application" factoryName="Application">
  383. <extension name="coverage" enabled="false" merge="false" runner="idea">
  384. <pattern>
  385. <option name="PATTERN" value="org.terasology.engine.*"/>
  386. <option name="ENABLED" value="true"/>
  387. </pattern>
  388. </extension>
  389. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  390. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  391. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport -noSaveGames"/>
  392. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  393. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  394. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  395. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  396. <option name="ENV_VARIABLES"/>
  397. <option name="PASS_PARENT_ENVS" value="true"/>
  398. <module name="PC"/>
  399. <envs/>
  400. <RunnerSettings RunnerId="Debug">
  401. <option name="DEBUG_PORT" value=""/>
  402. <option name="TRANSPORT" value="0"/>
  403. <option name="LOCAL" value="true"/>
  404. </RunnerSettings>
  405. <RunnerSettings RunnerId="Run"/>
  406. <ConfigurationWrapper RunnerId="Debug"/>
  407. <ConfigurationWrapper RunnerId="Run"/>
  408. <method/>
  409. </configuration>
  410. '''))
  411. // Run config for running the game without audio
  412. runManager.append(new XmlParser().parseText('''
  413. <configuration default="false" name="TerasologyPC (no audio)" type="Application" factoryName="Application">
  414. <extension name="coverage" enabled="false" merge="false" runner="idea">
  415. <pattern>
  416. <option name="PATTERN" value="org.terasology.engine.*"/>
  417. <option name="ENABLED" value="true"/>
  418. </pattern>
  419. </extension>
  420. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  421. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  422. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport -noSound"/>
  423. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  424. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  425. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  426. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  427. <option name="ENV_VARIABLES"/>
  428. <option name="PASS_PARENT_ENVS" value="true"/>
  429. <module name="PC"/>
  430. <envs/>
  431. <RunnerSettings RunnerId="Debug">
  432. <option name="DEBUG_PORT" value=""/>
  433. <option name="TRANSPORT" value="0"/>
  434. <option name="LOCAL" value="true"/>
  435. </RunnerSettings>
  436. <RunnerSettings RunnerId="Run"/>
  437. <ConfigurationWrapper RunnerId="Debug"/>
  438. <ConfigurationWrapper RunnerId="Run"/>
  439. <method/>
  440. </configuration>
  441. '''))
  442. // Run config for headless mode
  443. runManager.append(new XmlParser().parseText('''
  444. <configuration default="false" name="TerasologyPC (Headless)" type="Application" factoryName="Application">
  445. <extension name="coverage" enabled="false" merge="false" runner="idea">
  446. <pattern>
  447. <option name="PATTERN" value="org.terasology.engine.*"/>
  448. <option name="ENABLED" value="true"/>
  449. </pattern>
  450. </extension>
  451. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  452. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  453. <option name="PROGRAM_PARAMETERS" value="-headless -homedir=terasology-server -overrideDefaultConfig=override.cfg"/>
  454. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  455. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  456. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  457. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  458. <option name="ENV_VARIABLES"/>
  459. <option name="PASS_PARENT_ENVS" value="true"/>
  460. <module name="PC"/>
  461. <envs/>
  462. <RunnerSettings RunnerId="Debug">
  463. <option name="DEBUG_PORT" value=""/>
  464. <option name="TRANSPORT" value="0"/>
  465. <option name="LOCAL" value="true"/>
  466. </RunnerSettings>
  467. <RunnerSettings RunnerId="Run"/>
  468. <ConfigurationWrapper RunnerId="Debug"/>
  469. <ConfigurationWrapper RunnerId="Run"/>
  470. <method/>
  471. </configuration>
  472. '''))
  473. // Run config for TeraEd
  474. runManager.append(new XmlParser().parseText('''
  475. <configuration default="false" name="TeraEd (rendering editor)" type="Application" factoryName="Application">
  476. <extension name="coverage" enabled="false" merge="false" runner="idea">
  477. <pattern>
  478. <option name="PATTERN" value="org.terasology.editor.TeraEd.*"/>
  479. <option name="ENABLED" value="true"/>
  480. </pattern>
  481. </extension>
  482. <option name="MAIN_CLASS_NAME" value="org.terasology.editor.TeraEd"/>
  483. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  484. <option name="PROGRAM_PARAMETERS" value="-homedir"/>
  485. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  486. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  487. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  488. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  489. <option name="ENV_VARIABLES"/>
  490. <option name="PASS_PARENT_ENVS" value="true"/>
  491. <module name="TeraEd"/>
  492. <envs/>
  493. <RunnerSettings RunnerId="Debug">
  494. <option name="DEBUG_PORT" value=""/>
  495. <option name="TRANSPORT" value="0"/>
  496. <option name="LOCAL" value="true"/>
  497. </RunnerSettings>
  498. <RunnerSettings RunnerId="Run"/>
  499. <ConfigurationWrapper RunnerId="Debug"/>
  500. <ConfigurationWrapper RunnerId="Run"/>
  501. <method/>
  502. </configuration>
  503. '''))
  504. // Run config for a single module's tests *without* running all engine tests (good template for making other single-module-only test run configs)
  505. // Naturally won't work unless you actually have the NameGenerator module present locally
  506. runManager.append(new XmlParser().parseText('''
  507. <configuration default="false" name="All in NameGenerator" type="JUnit" factoryName="JUnit">
  508. <extension name="coverage" enabled="false" merge="false" runner="idea" />
  509. <module name="NameGenerator" />
  510. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  511. <option name="ALTERNATIVE_JRE_PATH" />
  512. <option name="PACKAGE_NAME" value="" />
  513. <option name="MAIN_CLASS_NAME" value="" />
  514. <option name="METHOD_NAME" value="" />
  515. <option name="TEST_OBJECT" value="package" />
  516. <option name="VM_PARAMETERS" value="" />
  517. <option name="PARAMETERS" value="" />
  518. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
  519. <option name="ENV_VARIABLES" />
  520. <option name="PASS_PARENT_ENVS" value="true" />
  521. <option name="TEST_SEARCH_SCOPE">
  522. <value defaultName="singleModule" />
  523. </option>
  524. <envs />
  525. <patterns />
  526. <method />
  527. </configuration>
  528. '''))
  529. // Run config for engine tests with JaCoCo set for code coverage
  530. runManager.append(new XmlParser().parseText('''
  531. <configuration default="false" name="engine-tests with JaCoCo" type="JUnit" factoryName="JUnit">
  532. <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="jacoco" />
  533. <module name="engine-tests" />
  534. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
  535. <option name="ALTERNATIVE_JRE_PATH" value="" />
  536. <option name="PACKAGE_NAME" value="" />
  537. <option name="MAIN_CLASS_NAME" value="" />
  538. <option name="METHOD_NAME" value="" />
  539. <option name="TEST_OBJECT" value="package" />
  540. <option name="VM_PARAMETERS" value="" />
  541. <option name="PARAMETERS" value="" />
  542. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
  543. <option name="ENV_VARIABLES" />
  544. <option name="PASS_PARENT_ENVS" value="true" />
  545. <option name="TEST_SEARCH_SCOPE">
  546. <value defaultName="moduleWithDependencies" />
  547. </option>
  548. <envs />
  549. <patterns />
  550. <method />
  551. </configuration>
  552. '''))
  553. // Run config for running with security set to permissive mode (don't block unsecure usages from within sandbox, just notify)
  554. runManager.append(new XmlParser().parseText('''
  555. <configuration default="false" name="TerasologyPC (permissive security)" type="Application" factoryName="Application">
  556. <extension name="coverage" enabled="false" merge="false" runner="idea">
  557. <pattern>
  558. <option name="PATTERN" value="org.terasology.engine.*"/>
  559. <option name="ENABLED" value="true"/>
  560. </pattern>
  561. </extension>
  562. <option name="MAIN_CLASS_NAME" value="org.terasology.engine.Terasology"/>
  563. <option name="VM_PARAMETERS" value="-Xms256m -Xmx1536m"/>
  564. <option name="PROGRAM_PARAMETERS" value="-homedir -noCrashReport -permissiveSecurity"/>
  565. <option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$"/>
  566. <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"/>
  567. <option name="ALTERNATIVE_JRE_PATH" value=""/>
  568. <option name="ENABLE_SWING_INSPECTOR" value="false"/>
  569. <option name="ENV_VARIABLES"/>
  570. <option name="PASS_PARENT_ENVS" value="true"/>
  571. <module name="PC"/>
  572. <envs/>
  573. <RunnerSettings RunnerId="Debug">
  574. <option name="DEBUG_PORT" value=""/>
  575. <option name="TRANSPORT" value="0"/>
  576. <option name="LOCAL" value="true"/>
  577. </RunnerSettings>
  578. <RunnerSettings RunnerId="Run"/>
  579. <ConfigurationWrapper RunnerId="Debug"/>
  580. <ConfigurationWrapper RunnerId="Run"/>
  581. <method/>
  582. </configuration>
  583. '''))
  584. // This part puts the added run config into the actual "Run" drop-down
  585. runManager.append(new XmlParser().parseText('''
  586. <list size="2">
  587. <item index="0" class="java.lang.String" itemvalue="Application.TerasologyPC"/>
  588. <item index="1" class="java.lang.String" itemvalue="Application.TerasologyPC (Headless)"/>
  589. </list>
  590. '''))
  591. // Makes the added run config the selected item
  592. def runManagerTag = iwsNode.component.find { it.@name == 'RunManager' }
  593. runManagerTag.@selected = 'Application.TerasologyPC'
  594. }
  595. }