From 2cc7bc4434842ebb51538c5463f593bb2f43f22d Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 27 Sep 2018 14:36:07 +0300 Subject: [PATCH] build scripts: allow specifying path to svg icon in ApplicationInfo.xml files (IDEA-166445) The svg file will be copied to bin directory and can be found there by CreateDesktopEntryAction and LibNotifyWrapper. --- .../build/ApplicationInfoProperties.groovy | 2 ++ .../intellij/build/impl/BuildTasksImpl.groovy | 14 ++++++++++++++ .../src/idea/ApplicationInfo.xsd | 1 + 3 files changed, 17 insertions(+) diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy index fddf9529d4ca..86df918e6b66 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/ApplicationInfoProperties.groovy @@ -39,6 +39,7 @@ class ApplicationInfoProperties { final String motto final String companyName final String shortCompanyName + final String svgRelativePath final boolean isEAP @SuppressWarnings(["GrUnresolvedAccess", "GroovyAssignabilityCheck"]) @@ -57,6 +58,7 @@ class ApplicationInfoProperties { minorVersionMainPart = minorVersion.takeWhile { it != '.' } isEAP = Boolean.parseBoolean(root.version.first().@eap) shortCompanyName = root.company.first().@shortName ?: shortenCompanyName(companyName) + svgRelativePath = root.icon.first().@svg } String getUpperCaseProductName() { shortProductName.toUpperCase() } diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy index 0e485ce523e7..489389f6c811 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/impl/BuildTasksImpl.groovy @@ -224,10 +224,24 @@ idea.fatal.error.notification=disabled } } + if (buildContext.applicationInfo.svgRelativePath != null) { + buildContext.ant.copy(file: findBrandingResource(buildContext.applicationInfo.svgRelativePath), tofile: "$buildContext.paths.distAll/bin/${buildContext.productProperties.baseFileName}.svg") + } + buildContext.productProperties.copyAdditionalFiles(buildContext, buildContext.paths.distAll) } } + private File findBrandingResource(String relativePath) { + def inModule = buildContext.findFileInModuleSources(buildContext.productProperties.applicationInfoModule, relativePath) + if (inModule != null) return inModule + def inResources = buildContext.productProperties.brandingResourcePaths.collect { new File(it, relativePath) }.find { it.exists() } + if (inResources == null) { + buildContext.messages.error("Cannot find '$relativePath' in sources of '$buildContext.productProperties.applicationInfoModule' and in $buildContext.productProperties.brandingResourcePaths") + } + return inResources + } + private void copyLogXml() { def src = new File("$buildContext.paths.communityHome/bin/log.xml") def dst = new File("$buildContext.paths.distAll/bin/log.xml") diff --git a/platform/platform-resources/src/idea/ApplicationInfo.xsd b/platform/platform-resources/src/idea/ApplicationInfo.xsd index 38aee3685f6e..1d4892d03529 100644 --- a/platform/platform-resources/src/idea/ApplicationInfo.xsd +++ b/platform/platform-resources/src/idea/ApplicationInfo.xsd @@ -279,6 +279,7 @@ +