| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  | plugins { | 
					
						
							|  |  |  |     id "com.github.johnrengelman.shadow" | 
					
						
							|  |  |  |     id 'java' | 
					
						
							| 
									
										
										
										
											2023-04-19 17:36:08 -05:00
										 |  |  |     id 'com.adarshr.test-logger' version '3.2.0' | 
					
						
							| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | group 'net.sf.openrocket' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Properties props = new Properties() | 
					
						
							|  |  |  | try { | 
					
						
							|  |  |  |     props.load(file('../core/src/main/resources/build.properties').newDataInputStream()) | 
					
						
							|  |  |  | } catch (Exception ex) { | 
					
						
							|  |  |  |     throw new Exception("Missing build.properties. file: " + ex.getMessage()) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | version = props['build.version'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | repositories { | 
					
						
							|  |  |  |     mavenCentral() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-19 17:36:08 -05:00
										 |  |  | //test {
 | 
					
						
							|  |  |  | //    testLogging {
 | 
					
						
							|  |  |  | //        events "PASSED", "SKIPPED", "FAILED"
 | 
					
						
							|  |  |  | //    }
 | 
					
						
							|  |  |  | //}
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  | configurations { | 
					
						
							|  |  |  |     testArtifactsClasspath { | 
					
						
							|  |  |  |         canBeConsumed = false | 
					
						
							|  |  |  |         canBeResolved = true | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dependencies { | 
					
						
							|  |  |  |     implementation fileTree(dir: 'libs', include: '*.jar') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     implementation 'org.apache.commons:commons-lang3:3.12.0' | 
					
						
							|  |  |  |     implementation group: 'org.commonmark', name: 'commonmark', version: '0.19.0' // 0.21.0
 | 
					
						
							|  |  |  |     implementation group: 'com.google.inject', name: 'guice', version: '4.2.2' // 4.2.3
 | 
					
						
							|  |  |  |     implementation group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13' // 5.5.13.2
 | 
					
						
							|  |  |  |     implementation group: 'org.jfree', name: 'jcommon', version: '1.0.24' | 
					
						
							|  |  |  |     implementation group: 'org.jfree', name: 'jfreechart', version: '1.0.15' // 1.5.4
 | 
					
						
							|  |  |  |     implementation group: 'com.miglayout', name: 'miglayout-swing', version: '5.2' // 5.3, 11.0
 | 
					
						
							|  |  |  |     implementation group: 'com.fifesoft', name: 'rsyntaxtextarea', version: '2.6.1' // 3.3.2
 | 
					
						
							|  |  |  |     implementation group: 'com.yuvimasory', name: 'orange-extensions', version: '1.3.0' | 
					
						
							|  |  |  |     implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3' | 
					
						
							|  |  |  |     implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3' | 
					
						
							|  |  |  |     implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     implementation project(':core') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TODO: Including output from coreotherwise NoClassDefFound issue with BaseTestCase
 | 
					
						
							|  |  |  | // The Cross Project Publications should work, but not seeming too.
 | 
					
						
							|  |  |  |     testImplementation project(':core').sourceSets.test.output | 
					
						
							|  |  |  | // https://docs.gradle.org/7.4/userguide/cross_project_publications.html
 | 
					
						
							|  |  |  |     testImplementation project (path: ':core', configuration: 'testArtifacts') | 
					
						
							|  |  |  |     testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.3.1' // 5.9.2
 | 
					
						
							|  |  |  |     testImplementation group: 'org.jmock', name: 'jmock', version: '2.9.0' // 2.12.0
 | 
					
						
							|  |  |  |     testImplementation group: 'org.jmock', name: 'jmock-junit4', version: '2.9.0' // 2.12.0
 | 
					
						
							|  |  |  |     testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3' | 
					
						
							|  |  |  |     testImplementation 'junit:junit:4.12' // 4.3.1 org.junit.jupiter
 | 
					
						
							|  |  |  | //    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
 | 
					
						
							|  |  |  | //    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def externalComponentsPath = './src/main/resources/datafiles/components' | 
					
						
							|  |  |  | tasks.register('externalComponentsCopy', Copy) { | 
					
						
							|  |  |  |     group = 'openrocket' | 
					
						
							|  |  |  |     dependsOn 'externalComponentsValidate' | 
					
						
							|  |  |  |     // gradle always performs up-to-date check which causes copying be skipped.
 | 
					
						
							|  |  |  |     from('./resources-src/datafiles/components-openrocket') { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     from('./resources-src/datafiles/components-dbcook/orc') { | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     into externalComponentsPath | 
					
						
							|  |  |  |     exclude '**/*.bak' | 
					
						
							|  |  |  |     includeEmptyDirs = false | 
					
						
							|  |  |  |     eachFile { details -> | 
					
						
							|  |  |  |         println "Copying $details.sourcePath to $details.path ..." | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | tasks.register('externalComponentsDelete', Delete) { | 
					
						
							|  |  |  |     group = 'openrocket' | 
					
						
							|  |  |  |     delete fileTree(externalComponentsPath) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | tasks.register('externalComponentsInit') { | 
					
						
							|  |  |  |     group = 'openrocket' | 
					
						
							|  |  |  |     doLast { | 
					
						
							|  |  |  |         exec { | 
					
						
							|  |  |  |             workingDir "../" | 
					
						
							|  |  |  |             executable 'git' | 
					
						
							|  |  |  |             args 'submodule', 'init' | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         println "Executed externalComponentsInit!" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | tasks.register('externalComponentsValidate') { | 
					
						
							|  |  |  |     group = 'openrocket' | 
					
						
							|  |  |  |     def externalResourceComponents = './resources-src/datafiles/components-dbcook/orc'; | 
					
						
							|  |  |  |     def git = '../.git'; | 
					
						
							|  |  |  |     if (!project.file(externalResourceComponents).exists()) { | 
					
						
							| 
									
										
										
										
											2023-05-05 18:57:55 -05:00
										 |  |  |         println "found: ${project.file(externalResourceComponents)}" | 
					
						
							| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  |         def message = "The component database is now a submodule, and must be included into\n" + | 
					
						
							|  |  |  |                 "this project to compile and run the app.\n" + | 
					
						
							|  |  |  |                 "\n"; | 
					
						
							|  |  |  |         if (project.file(git).exists()) { | 
					
						
							|  |  |  |             message += | 
					
						
							|  |  |  |                     "If you retrieved this code by cloning the openrocket repository, \n" + | 
					
						
							|  |  |  |                     "the Gradle build will initialize the submodule if missing.\n" + | 
					
						
							|  |  |  |                     "\n" + | 
					
						
							|  |  |  |                     "You can also manually initialize and update the submodule from the \n" + | 
					
						
							|  |  |  |                     "command line\n" + | 
					
						
							|  |  |  |                     "% git submodule init\n" + | 
					
						
							|  |  |  |                     "% git submodule update --remote\n" + | 
					
						
							|  |  |  |                     "\n"; | 
					
						
							|  |  |  |             println message | 
					
						
							|  |  |  |             dependsOn externalComponentsUpdate | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             message += | 
					
						
							|  |  |  |                     "If you retrieved this code by downloading and uncompressing a zip file,\n" + | 
					
						
							| 
									
										
										
										
											2023-05-06 11:17:44 -05:00
										 |  |  |                     "Download the code\n" + | 
					
						
							|  |  |  |                     "from https://github.com/dbcook/openrocket-database and uncompress it.\n" + | 
					
						
							|  |  |  |                     "Copy the files and directories under openrocket-database-master\n" + | 
					
						
							|  |  |  |                     "into ''./swing/${externalResourceComponents}''\n" + | 
					
						
							|  |  |  |                     "\n"; | 
					
						
							| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  |             println message | 
					
						
							|  |  |  |             throw new GradleException('Invalid external component resources.') | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | tasks.register('externalComponentsUpdate') { | 
					
						
							|  |  |  |     group = 'openrocket' | 
					
						
							| 
									
										
										
										
											2023-04-26 07:48:38 -05:00
										 |  |  |     dependsOn 'externalComponentsInit' | 
					
						
							| 
									
										
										
										
											2023-04-18 21:48:26 -05:00
										 |  |  |     doLast { | 
					
						
							|  |  |  |         exec { | 
					
						
							|  |  |  |             workingDir "../" | 
					
						
							|  |  |  |             executable 'git' | 
					
						
							|  |  |  |             args 'submodule', 'update', '--remote' | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         println "Executed externalComponentsUpdate!" | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | clean.dependsOn([externalComponentsDelete]) | 
					
						
							| 
									
										
										
										
											2023-04-19 17:36:08 -05:00
										 |  |  | //compileJava.dependsOn([externalComponentsCopy])
 | 
					
						
							|  |  |  | processResources.dependsOn([externalComponentsCopy]) |