From 099423280ee30f5c602aec289f024be8387b641d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 16 Jul 2014 15:48:45 +0200 Subject: [PATCH] project: build/update scripts tuned to support home paths with spaces --- build/lib/jps/jps-builders.jar | Bin 1500322 -> 1500478 bytes build/scripts/utils.gant | 9 +++++---- .../jps/idea/IdeaProjectLoader.groovy | 12 +++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/build/lib/jps/jps-builders.jar b/build/lib/jps/jps-builders.jar index 05c199bfbb85c2bb1979209315c5123463f27f81..f937e00ed4677d80e5203ae666003b20dab9b00e 100644 GIT binary patch delta 3538 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 diff --git a/build/scripts/utils.gant b/build/scripts/utils.gant index e0cb06b9004c..d64c75f799d0 100644 --- a/build/scripts/utils.gant +++ b/build/scripts/utils.gant @@ -88,7 +88,7 @@ private String require(String key) { this[key] } catch (MissingPropertyException ignored) { - projectBuilder.error("Property $key is required") + projectBuilder.error("Property '$key' is required") } } @@ -97,7 +97,7 @@ private String require(String key, String defaultValue) { this[key] } catch (MissingPropertyException ignored) { - projectBuilder.info("$key is not defined. Defaulting to $defaultValue") + projectBuilder.info("'$key' is not defined. Defaulting to '$defaultValue'") this[key] = defaultValue } } @@ -112,8 +112,9 @@ binding.setVariable("requireProperty", {String key, String defaultValue = null - }) binding.setVariable("guessHome", { - // Current file is supposed to be at build/scripts/release.gant path - new File(requireProperty("gant.file").substring("file:".length())).getParentFile().getParentFile().getParent() + // current file is supposed to be at build/scripts/*.gant path + String uri = requireProperty("gant.file") + new File(new URI(uri).getSchemeSpecificPart()).getParentFile().getParentFile().getParent() }) binding.setVariable("loadProject", { diff --git a/jps/standalone-builder/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy b/jps/standalone-builder/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy index 627c9f821b99..d7e52c6d061f 100644 --- a/jps/standalone-builder/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy +++ b/jps/standalone-builder/src/org/jetbrains/jps/idea/IdeaProjectLoader.groovy @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,21 +14,23 @@ * limitations under the License. */ package org.jetbrains.jps.idea + /** * @author max */ public class IdeaProjectLoader { public static String guessHome(Script script) { - File home = new File(script["gant.file"].substring("file:".length())) + String uri = script["gant.file"] + File home = new File(new URI(uri).getSchemeSpecificPart()) while (home != null) { - if (home.isDirectory()) { - if (new File(home, ".idea").exists()) return home.getCanonicalPath() + if (home.isDirectory() && new File(home, ".idea").exists()) { + return home.getCanonicalPath() } home = home.getParentFile() } - return null + throw new IllegalArgumentException("Cannot guess project home from '" + uri + "'") } }