forked from jphp-group/jphp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathext-template.gradle
75 lines (59 loc) · 2.86 KB
/
ext-template.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def readExtIdFromConsole() {
ant.input(message: 'Enter ID of extension (e.g. gui, ssh, sql, etc.): ', addproperty: 'jphpExtID');
def extId = ant.jphpExtID
if (extId == null || extId.trim().isEmpty()) {
return readExtIdFromConsole();
} else {
return extId;
}
}
def createBuildGradle(File dir, List dependencies) {
def buildGradleText = file("$rootProject.rootDir.path/exts/ext-template/build.gradle").text
def deps = dependencies.join("\n")
buildGradleText = buildGradleText.replace("\$dependencies\$", deps)
dir.mkdirs()
file("$dir/build.gradle").text = buildGradleText
}
def createJPHPExtension(Project project) {
def extId = this.readExtIdFromConsole();
println()
println("Start generate JPHP extension ...")
println("--> Extension ID: $extId");
def extDir = file("$project.rootDir.path/exts/jphp-$extId-ext")
def extNs = extId.toString().toLowerCase()
def extPackage = "org.develnext.jphp.ext.$extNs"
def extClass = extId.toString().substring(0, 1).toUpperCase() + extId.toString().substring(1) + "Extension"
def extTestClass = extNs.substring(0, 1).toUpperCase() + extNs.substring(1) + "JvmTestCase"
def extClassDir = file("$extDir.path/src/main/java/org/develnext/jphp/ext/$extNs/")
def javaExtClass = file("$project.rootDir.path/exts/ext-template/ExampleExtension.java").text
javaExtClass = javaExtClass
.replace("\$package\$", extPackage)
.replace("\$ns\$", extNs)
.replace("\$className\$", extClass);
def testExtClass = file("$project.rootDir.path/exts/ext-template/ExampleJvmTestCase.java").text
testExtClass = testExtClass
.replace("\$ns\$", extNs)
.replace("\$className\$", extTestClass)
.replace("\$extClassName\$", extClass);
if (extDir.exists()) {
System.err.println("[ERROR] Extension './exts/jphp-$extId-ext' already exists!")
System.exit(-1)
}
this.createBuildGradle(extDir, ['provided project(":jphp-runtime")']);
copy {
from "$project.rootDir.path/exts/ext-template/dir"
into extDir
}
file("$extDir/src/main/tests/" + extPackage.replace('.', '/') + "/classes").mkdirs()
file("$extDir/src/main/tests/" + extPackage.replace('.', '/') + "/${extTestClass}.java").createNewFile()
file("$extDir/src/main/tests/" + extPackage.replace('.', '/') + "/${extTestClass}.java") << testExtClass
file("$extDir/src/main/tests/resources/$extNs").mkdirs()
extClassDir.mkdirs()
file("$extDir.path/src/main/resources/JPHP-INF/sdk/$extNs/").mkdirs()
file("$extDir.path/src/main/resources/META-INF/services/php.runtime.ext.support.Extension") << extPackage + "." + extClass
file("$extClassDir/${extClass}.java").createNewFile()
file("$extClassDir/${extClass}.java") << javaExtClass
}
ext {
createJPHPExtension = this.&createJPHPExtension
}