forked from winger/idea-rust
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
126 lines (109 loc) · 3.94 KB
/
build.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.6
targetCompatibility = 1.6
def intellij_libs = fileTree(dir: libraries_intellij + "lib/", include: '*.jar')
def intellij_plugins = libraries_intellij + "plugins/"
idea {
module {
iml {
withXml {
def node = it.node
node.@type = "PLUGIN_MODULE"
node.@version = "4"
}
}
}
}
dependencies {
println 'Compiling classes, using intelliJ at ' + intellij_libs
compile files('src/flex/JFlex.jar')
compile intellij_libs
}
sourceSets {
main {
java {
srcDir 'src/java/main'
srcDir 'gen'
srcDir 'src/flex'
}
resources {
srcDir 'src/java/main/'
include '**/*.properties'
include '**/*.png'
}
}
test {
java {
srcDir 'src/java/test'
}
resources {
srcDir 'src/rust/test'
include '**/*.properties'
include '**/*.png'
}
}
}
// Build grammar
task grammar(type: JavaExec) {
main = "org.intellij.grammar.Main"
classpath = intellij_libs.plus(files(file("grammar-kit.jar")))
args = ["gen", "src${File.separator}bnf${File.separator}RustGrammar.bnf"]
}
tasks.compileJava.dependsOn(grammar)
// Generate Lexer
task generateLexerFromGrammar(type: JavaExec) {
main = "org.intellij.grammar.Main"
classpath = intellij_libs.plus(files(file("grammar-kit.jar")))
args = ["gen", "src${File.separator}bnf${File.separator}RustGrammar.bnf"]
}
// Build Lexer
task generateLexer(type: JavaExec) {
main = "JFlex.Main"
classpath = intellij_libs.plus(files(file("src/flex/JFlex.jar")))
args = ["-sliceandcharat", "--skel", "src/flex/idea-flex.skeleton", "src/flex/vektah/rust/RustLexer.flex"]
}
tasks.compileJava.dependsOn(grammar, generateLexer)
tasks.withType(Test) {
systemProperty 'rust.source', rust_source
}
jar {
def buildNumber = System.env.BUILD_NUMBER?.toInteger()
from ("META-INF") { include 'plugin.xml' into "META-INF" filter {String line -> buildNumber != null ? line.replaceAll("<version>(.+)</version>","<version>\$1-${String.format("%08d",buildNumber)}</version>") : line} }
}
task copyIntoIdea(dependsOn: build, type: Copy) {
into "build/run/plugins/"
from jar.archivePath
}
task runIdea(dependsOn: copyIntoIdea) << {
ant.java(classname:"com.intellij.idea.Main", fork:true, spawn:true, classpath:intellij_libs.plus(files("$System.env.JAVA_HOME/lib/tools.jar")).asPath) {
sysproperty(key:"idea.config.path",value:"build/run/config")
sysproperty(key:"idea.system.path",value:"build/run/system")
sysproperty(key:"idea.plugins.path",value:"build/run/plugins")
sysproperty(key:"idea.platform.prefix",value:"Idea")
sysproperty(key:"idea.launcher.port",value:"8998")
sysproperty(key:"idea.launcher.bin.path",value:libraries_intellij + "bin/")
}
}
task debugIdea(dependsOn: copyIntoIdea) << {
ant.java(classname:"com.intellij.idea.Main", fork:true, spawn: true, classpath:intellij_libs.plus(files("$System.env.JAVA_HOME/lib/tools.jar")).asPath) {
sysproperty(key:"idea.config.path",value:"build/run/config")
sysproperty(key:"idea.system.path",value:"build/run/system")
sysproperty(key:"idea.plugins.path",value:"build/run/plugins")
sysproperty(key:"idea.platform.prefix",value:"Idea")
sysproperty(key:"idea.launcher.port",value:"8998")
sysproperty(key:"idea.launcher.bin.path",value:libraries_intellij + "bin/")
jvmarg(value:'-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005')
}
}
//For CI / publishing
task copyPluginVersion(type:Copy) {
def buildNumber = System.env.BUILD_NUMBER?.toInteger()
into ("/var/www/html")
from ("META-INF/plugin.xml")
filter {String line -> buildNumber != null ? line.replaceAll("<version>(.+)</version>","<version>\$1-${String.format("%08d",buildNumber)}</version>") : line}
}
task copyArtifact(type:Copy, dependsOn: build) {
into ("/var/www/html")
from jar.archivePath
}