Skip to content

Commit 072c861

Browse files
Merge pull request #1 from ChillyCheesy/feat/run-server-task
Feat/run server task
2 parents 43c8c54 + da2bf46 commit 072c861

File tree

7 files changed

+105
-19
lines changed

7 files changed

+105
-19
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id 'maven-publish'
66
}
77

8-
version = '0.0.3'
8+
version = '1.0.0'
99
group = 'com.chillycheesy'
1010

1111
repositories {

settings.gradle

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1 @@
1-
pluginManagement {
2-
repositories {
3-
mavenLocal()
4-
gradlePluginPortal()
5-
}
6-
}
7-
8-
rootProject.name = 'modulo-gradle-application'
1+
rootProject.name = 'modulo-application'

src/main/groovy/com/chillycheesy/modulo/ModuloApplicationPlugin.groovy

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.chillycheesy.modulo
22

33
import com.chillycheesy.modulo.extensions.ModuleExtension
4+
import com.chillycheesy.modulo.tasks.DeployModuleTask
45
import com.chillycheesy.modulo.tasks.GenerateModuleYmlTask
6+
import com.chillycheesy.modulo.tasks.RunModuloServer
57
import org.gradle.api.Project
68
import org.gradle.api.Plugin
79

@@ -17,10 +19,17 @@ class ModuloApplicationPlugin implements Plugin<Project> {
1719
@Override
1820
void apply(Project project) {
1921
project.pluginManager.apply 'java-library'
20-
def moduleExtension = project.extensions.create('module', ModuleExtension, project)
21-
def generateModuleYml = new GenerateModuleYmlTask(moduleExtension)
22+
final moduleExtension = project.extensions.create('module', ModuleExtension, project)
23+
final generateModuleYml = new GenerateModuleYmlTask(moduleExtension)
24+
final runModuloServer = new RunModuloServer(moduleExtension)
25+
final deployModule = new DeployModuleTask()
26+
27+
final generateModuleYmlTask = generateModuleYml.generate(project)
28+
final runModuloServerTask = runModuloServer.generate(project)
29+
final deployModuleTask = deployModule.generate(project)
2230

23-
def generateModuleYmlTask = generateModuleYml.generate(project)
2431
project.processResources.dependsOn generateModuleYmlTask
32+
deployModuleTask.dependsOn project.assemble
33+
runModuloServerTask.dependsOn deployModuleTask
2534
}
2635
}

src/main/groovy/com/chillycheesy/modulo/extensions/ModuleExtension.groovy

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,17 @@ class ModuleExtension {
3939
* Define softDependencies
4040
*/
4141
List<String> softDependencies = []
42+
/**
43+
* Modulo api version.
44+
*/
45+
String moduloVersion = 'BINKS-0.1.0'
4246

4347
/**
4448
* Init the extension with default values.
4549
* @param project The target project.
4650
*/
4751
ModuleExtension(Project project) {
4852
moduleName = project.name
49-
version = project.version
50-
main = "${project.group.toString()}.${moduleName}"
5153
target = "${project.projectDir.path}/src/main/resources"
5254
}
5355

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.chillycheesy.modulo.tasks
2+
3+
import org.gradle.api.Project
4+
5+
class DeployModuleTask implements ModuloTask {
6+
7+
@Override
8+
def generate(Project project) {
9+
return project.task('deployModuleToLocalModuloServer') {
10+
group = 'modulo'
11+
description = 'Deploy the module to the local modulo server module file.'
12+
doLast {
13+
final moduleSrc = project.fileTree("$project.buildDir/libs")
14+
final moduleDest = project.file('modulo/modules')
15+
assert moduleDest.exists() || moduleDest.mkdirs()
16+
project.copy {
17+
from moduleSrc
18+
into moduleDest
19+
include '*.jar'
20+
}
21+
}
22+
}
23+
}
24+
25+
}

src/main/groovy/com/chillycheesy/modulo/tasks/GenerateModuleYmlTask.groovy

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class GenerateModuleYmlTask implements ModuloTask {
1717

1818
/**
1919
* Create the Task
20-
* @param moduleExtension The module extention who store plugin.yml data
20+
* @param moduleExtension The module extension who store plugin.yml data
2121
*/
2222
GenerateModuleYmlTask(ModuleExtension moduleExtension) {
2323
this.moduleExtension = moduleExtension
@@ -34,14 +34,14 @@ class GenerateModuleYmlTask implements ModuloTask {
3434
group = 'modulo'
3535
description = 'Generate the module.yml file for a Modulo module.'
3636
doLast {
37-
final moduleConfig = getModuleConfigFile()
37+
final moduleConfig = getModuleConfigFile(project)
3838
final Yaml yaml = new Yaml()
3939
final moduleName = moduleExtension.moduleName ?: project.name
4040
moduleConfig.text = yaml.dump([
4141
name: moduleName,
4242
version: moduleExtension.version ?: project.version,
43-
authors: moduleExtension.authors ?: "${project.group.toString()}.${moduleName}",
44-
main: moduleExtension.main,
43+
authors: moduleExtension.authors ?: ['ChillyCheesy'],
44+
main: moduleExtension.main ?: "$moduleName",
4545
dependencies: moduleExtension.dependencies,
4646
softDependencies: moduleExtension.softDependencies
4747
])
@@ -51,9 +51,10 @@ class GenerateModuleYmlTask implements ModuloTask {
5151

5252
/**
5353
* Get the module.yml file and create it if doesn't exist.
54+
* @param project The target project.
5455
* @return The file.
5556
*/
56-
private def getModuleConfigFile() {
57+
private def getModuleConfigFile(project) {
5758
final target = moduleExtension.target ?: "${project.projectDir.path}/src/main/resources"
5859
final resources = new File(target)
5960
resources.mkdirs()
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.chillycheesy.modulo.tasks
2+
3+
import com.chillycheesy.modulo.extensions.ModuleExtension
4+
import org.gradle.api.Project
5+
6+
class RunModuloServer implements ModuloTask {
7+
8+
private final def LINK = 'https://s01.oss.sonatype.org/content/repositories/releases/com/chillycheesy/modulo-server'
9+
10+
private ModuleExtension moduleExtension
11+
12+
RunModuloServer(ModuleExtension moduleExtension) {
13+
this.moduleExtension = moduleExtension
14+
}
15+
16+
@Override
17+
def generate(Project project) {
18+
return project.task('runModuloServer') {
19+
group = 'modulo'
20+
description = 'Run the Modulo server.'
21+
doLast {
22+
final file = new File("${project.rootDir.path}/modulo/modulo-server-${moduleExtension.moduloVersion}.jar")
23+
assert file.parentFile.exists() || file.parentFile.mkdirs()
24+
project.delete(project.fileTree(file.parent) {
25+
include '*.jar'
26+
})
27+
if (!file.exists()) downloadFile(file)
28+
project.javaexec {
29+
main = '-jar'
30+
args = [file.absolutePath]
31+
workingDir = 'modulo'
32+
standardInput = System.in
33+
standardOutput = System.out
34+
}
35+
}
36+
}
37+
}
38+
39+
private def downloadFile(File file) {
40+
def url = "$LINK/${moduleExtension.moduloVersion}/${file.getName()}"
41+
println "Downloading ${url} to ${file.getPath()}..."
42+
new URL(url).openConnection().with { connection ->
43+
connection.instanceFollowRedirects = false
44+
url = connection.getHeaderField("Location")
45+
if(!url) {
46+
file.withOutputStream { outputStream ->
47+
connection.inputStream.with { inputStream ->
48+
outputStream << inputStream
49+
inputStream.close()
50+
}
51+
}
52+
}
53+
}
54+
}
55+
56+
}

0 commit comments

Comments
 (0)