IDEADEV-41629 Language Injection in Maia: Usability regressions
[fedora-idea.git] / build / scripts / utils.gant
blobf05aeb16070e6f0bdb69bc3bbac7b4e3a818d3bf
1 import org.jetbrains.jps.Jps
2 import org.jetbrains.jps.idea.IdeaProjectLoader
4 includeTool << Jps
6 binding.setVariable("p", {String key ->
7   return getProperty(key) as String
8 })
10 binding.setVariable("guessJdk", {
11   String javaHome = p("java.home")
13   if (new File(javaHome).getName() == "jre") {
14     javaHome = new File(javaHome).getParent()
15   }
17   return javaHome
20 binding.setVariable("isMac", {
21   return System.getProperty("os.name").toLowerCase().startsWith("mac")
24 binding.setVariable("isDefined", {String key ->
25   try {
26     this[key]
27     return true
28   }
29   catch (MissingPropertyException mpe) {
30     return false
31   }
34 private String require(String key) {
35   try {
36     this[key]
37   }
38   catch (MissingPropertyException mpe) {
39     project.error("Property $key is required")
40   }
43 private String require(String key, String defaultValue) {
44   try {
45     this[key]
46   }
47   catch (MissingPropertyException mpe) {
48     project.info("$key is not defined. Defaulting to $defaultValue")
49     this[key] = defaultValue
50   }
53 binding.setVariable("requireProperty", {String key, String defaultValue = null ->
54   if (defaultValue == null) {
55     require(key)
56   }
57   else {
58     require(key, defaultValue)
59   }
62 binding.setVariable("guessHome", {
63   // Current file is supposed to be at build/scripts/release.gant path
64   new File(requireProperty("gant.file").substring("file:".length())).getParentFile().getParentFile().getParent()
67 binding.setVariable("loadProject", {
68   requireProperty("jdk", requireProperty("jdk15.home", guessJdk()))
69   new IdeaProjectLoader().loadFromPath(project, "${home}")
71   binding.ant.patternset(id: "idea.compiler.resources") {
72     exclude(name: "**/*.java")
73     exclude(name: "**/*.form")
74     exclude(name: "**/*.class")
75     exclude(name: "**/*.scala")
76     exclude(name: "**/*.groovy")
77   }
79   project["compiler.resources.id"] = "idea.compiler.resources"
81   if (!isMac()) {
82     project.modules.values().each {
83       it.classpath << project.resolve("$jdk/lib/tools.jar")
84     }
85   }
88 requireProperty("home", guessHome())
90 project.stagePrinter = { String message ->
91   println "##teamcity[progressMessage '$message']"