| import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome | |
| setProperty("projectHome", guessHome(this as Script)) | |
| setProperty("home", projectHome) | |
| includeTargets << new File("${projectHome}/build/scripts/utils.gant") | |
| setProperty("outDir", "${projectHome}/out/python") | |
| setProperty("ideaDir", "${outDir}/ideaCE") | |
| requireProperty("ideaPath", ideaDir) | |
| setProperty("pluginHelp", "${outDir}/help") | |
| setProperty("buildNumber", requireProperty("build.number", snapshot)) | |
| setProperty("ideaBuildNumber", requireProperty("idea.build.number")) | |
| setProperty("ideaHomePacked", "${ideaDir}/jdk16") //compiled idea | |
| setProperty("ideaHome", "${ideaDir}/jdk16/idea-IC-${ideaBuildNumber}") //compiled idea | |
| setProperty("pluginHome", "${projectHome}/python") | |
| setProperty("pluginRevision", "${buildNumber}") | |
| setProperty("ideaLib", "${ideaHome}/lib") | |
| setProperty("ideaPlugins", "${ideaHome}/plugins") //compiled plugins | |
| setProperty("output", "${projectHome}/python/distCE") | |
| setProperty("zipdir", "${output}/zip") | |
| setProperty("plugindir", "${zipdir}/python") | |
| setProperty("zipname", "python-community-${pluginRevision}.zip") | |
| setProperty("srcDir", "${pluginHome}/src") | |
| setProperty("resourcesDir", "${pluginHome}/resources") | |
| setProperty("classesRootDir", "${outDir}/classes") | |
| setProperty("classesDir", "${classesRootDir}/python") | |
| //Compiler options | |
| setProperty("compilerDebug", "on") | |
| setProperty("compilerGenerateNoWarnings", "off") | |
| setProperty("compilerArgs", "") | |
| setProperty("compilerMaxMemory", "256m") | |
| ant.patternset(id: "resources.pt") { | |
| include(name: "**/?*.properties") | |
| include(name: "**/?*.template") | |
| include(name: "**/?*.xml") | |
| include(name: "**/?*.gif") | |
| include(name: "**/?*.png") | |
| include(name: "**/?*.txt") | |
| include(name: "**/?*.jpeg") | |
| include(name: "**/?*.jpg") | |
| include(name: "**/?*.html") | |
| include(name: "**/?*.dtd") | |
| include(name: "**/?*.tld") | |
| include(name: "**/?*.py") | |
| include(name: "**/?*.ft") | |
| include(name: "**/?*.dic") | |
| exclude(name: "**/plugin.xml") | |
| } | |
| target(name: "clean", description: "Cleanup output") { | |
| ant.echo("Cleaning ${output}") | |
| ant.delete(dir: "${output}", failonerror: "false") | |
| ant.echo("Cleaning ${classesRootDir}") | |
| ant.delete(dir: "${classesRootDir}", failonerror: "false") | |
| ant.echo("Cleaning ${ideaHome}") | |
| ant.delete(dir: "${ideaHome}", failonerror: "false") // out/python/idea/ | |
| } | |
| target(name: "unzip") { | |
| ant.mkdir(dir: "${ideaHomePacked}") | |
| ant.gunzip(src: "${ideaPath}/ideaIC-${ideaBuildNumber}.tar.gz") | |
| ant.untar(src: "${ideaPath}/ideaIC-${ideaBuildNumber}.tar", dest: "${ideaHomePacked}") | |
| } | |
| target(name: "compile", description: "Compile module python") { | |
| depends("unzip") | |
| ant.path(id: "classpath.lib") { | |
| fileset(dir: "${ideaLib}") { | |
| include(name: "?*.jar") | |
| } | |
| fileset(dir: "${ideaPlugins}/terminal/lib") { | |
| include(name: "*.jar") | |
| } | |
| fileset(dir: "${ideaPlugins}/IntelliLang/lib") { | |
| include(name: "*.jar") | |
| } | |
| } | |
| ant.path(id: "sourcepath") { | |
| dirset(dir: "${pluginHome}") { | |
| include(name: "resources") | |
| include(name: "src") | |
| include(name: "gen") | |
| include(name: "pluginSrc") | |
| include(name: "pydevSrc") | |
| include(name: "openapi/src") | |
| include(name: "psi-api/src") | |
| include(name: "IntelliLang-python/src") | |
| } | |
| } | |
| //The task requires the following libraries from IntelliJ IDEA distribution: | |
| //javac2.jar; jdom.jar; asm.jar; asm-commons.jar | |
| ant.taskdef(name: "javac2", classname: "com.intellij.ant.Javac2") { | |
| classpath { | |
| fileset(dir: "${ideaLib}") { | |
| include(name: "?*.jar") | |
| } | |
| } | |
| } | |
| ant.mkdir(dir: "${classesDir}") | |
| //compile | |
| ant.javac2(destdir: "${classesDir}", | |
| debug: "${compilerDebug}", | |
| nowarn: "${compilerGenerateNoWarnings}", | |
| memorymaximumsize: "${compilerMaxMemory}", | |
| fork: "true") { | |
| compilerarg(line: "${compilerArgs}") | |
| classpath(refid: "classpath.lib") | |
| src(refid: "sourcepath") | |
| } | |
| //copy resources | |
| ant.copy(todir: "${classesDir}") { | |
| fileset(dir: "${resourcesDir}") { | |
| patternset(refid: "resources.pt") | |
| type(type: "file") | |
| } | |
| fileset(dir: "${pluginHome}/src") { | |
| patternset(refid: "resources.pt") | |
| type(type: "file") | |
| } | |
| fileset(dir: "${pluginHome}/psi-api/resources") { | |
| patternset(refid: "resources.pt") | |
| type(type: "file") | |
| } | |
| fileset(dir: "${pluginHome}/IntelliLang-python/src") { | |
| patternset(refid: "resources.pt") | |
| type(type: "file") | |
| } | |
| fileset(dir: "${pluginHome}/resources") { | |
| patternset(refid: "resources.pt") | |
| type(type: "file") | |
| } | |
| fileset(dir: "${home}/colorSchemes/src") | |
| } | |
| //copy plugin.xml | |
| ant.mkdir(dir: "${classesDir}/META-INF") | |
| ant.copy(todir: "${classesDir}/META-INF") { | |
| fileset(file: "${pluginHome}/pluginSrc/META-INF/*.xml") | |
| fileset(file: "${pluginHome}/pluginResources/META-INF/*.xml") | |
| } | |
| ant.replace(file: "${classesDir}/META-INF/plugin.xml") { | |
| replacefilter(token: "@@BUILD_NUMBER@@", value: "${buildNumber}") | |
| } | |
| ant.replaceregexp(file: "${classesDir}/META-INF/plugin.xml", | |
| match: "since-build=\"\\d+\\.\\d+\"", | |
| replace: "since-build=\"${ideaBuildNumber}\"") | |
| } | |
| target(name: "jar", description: "Generate jar file") { | |
| depends("compile") | |
| ant.mkdir(dir: "${output}") | |
| ant.jar(destfile: "${output}/python-community.jar", basedir: "${classesDir}") { | |
| manifest() { | |
| attribute(name: "Revision", value: "${pluginRevision}") | |
| //<!--<attribute name="Build" value="${plugin.version}"/>--> | |
| } | |
| } | |
| } | |
| target(name: "zip", description: "Generate zip plugin file") { | |
| depends("jar") | |
| ant.mkdir(dir: "${zipdir}") | |
| // copy plugin jar | |
| ant.mkdir(dir: "${plugindir}/lib") | |
| ant.move(file: "${output}/python-community.jar", todir: "${plugindir}/lib") | |
| ant.mkdir(dir: "${plugindir}/helpers") | |
| ant.copy(todir: "${plugindir}/helpers") { | |
| fileset(dir: "${pluginHome}/helpers") { | |
| include(name: "**/*") | |
| } | |
| } | |
| ant.mkdir(dir: "${plugindir}/help") | |
| ant.copy(file: "${pluginHelp}/pytonpluginhelp.jar", tofile: "${plugindir}/help/pythonpluginhelp.jar", failonerror: false) | |
| ant.copy(file: "${pluginHelp}/pytonpluginhelp_mac.jar", tofile: "${plugindir}/help/pythonpluginhelp_mac.jar", failonerror: false) | |
| ant.zip(basedir: "${zipdir}", destfile: "${output}/${zipname}") | |
| } | |
| target(name: "build") { | |
| depends("unzip") | |
| depends("compile") | |
| } | |
| target(name: "dist", description: "main target") { | |
| depends("clean") | |
| depends("build") | |
| depends("zip") | |
| } | |
| target('default': "Build artifacts") { | |
| depends("dist") | |
| } |