private void setRunningEnvironment(CommandLine commandLine, String env) { // Get the default environment if one hasn't been set. System.setProperty("base.dir", settings.getBaseDir().getPath()); if (env != null) { // Add some extra binding variables that are now available. settings.setGrailsEnv(env); settings.setDefaultEnv(false); } else { // Add some extra binding variables that are now available. settings.setGrailsEnv(commandLine.getEnvironment()); settings.setDefaultEnv(!commandLine.isEnvironmentSet()); } }
private int attemptPrecompiledScriptExecute( CommandLine commandLine, String scriptName, String env, GantBinding binding, List<File> allScripts) { console.updateStatus("Running pre-compiled script"); // Must be called before the binding is initialised. setRunningEnvironment(commandLine, env); // Get Gant to load the class by name using our class loader. ScriptBindingInitializer bindingInitializer = new ScriptBindingInitializer( commandLine, classLoader, settings, pluginPathSupport, isInteractive); Gant gant = new Gant(bindingInitializer.initBinding(binding, scriptName), classLoader); try { loadScriptClass(gant, scriptName); } catch (ScriptNotFoundException e) { if (!isInteractive || InteractiveMode.isActive()) { throw e; } scriptName = fixScriptName(scriptName, allScripts); if (scriptName == null) { throw e; } try { loadScriptClass(gant, scriptName); } catch (ScriptNotFoundException ce) { return executeScriptWithCaching(commandLine, scriptName, env); } // at this point if they were calling a script that has a non-default // env (e.g. war or test-app) it wouldn't have been correctly set, so // set it now, but only if they didn't specify the env (e.g. "grails test war" -> "grails test // war") if (Boolean.TRUE.toString().equals(System.getProperty(Environment.DEFAULT))) { commandLine.setCommand(GrailsNameUtils.getScriptName(scriptName)); env = commandLine.lookupEnvironmentForCommand(); binding.setVariable("grailsEnv", env); settings.setGrailsEnv(env); System.setProperty(Environment.KEY, env); settings.setDefaultEnv(false); System.setProperty(Environment.DEFAULT, Boolean.FALSE.toString()); } } return executeWithGantInstance(gant, DO_NOTHING_CLOSURE, binding).exitCode; }