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; }
private int handleScriptExecutedOutsideProjectError() { console.error( settings.getBaseDir().getPath() + " does not appear to be part of a Grails application."); console.error("The following commands are supported outside of a project:"); Collections.sort( scriptsAllowedOutsideOfProject, new Comparator<Resource>() { public int compare(Resource resource, Resource resource1) { return resource.getFilename().compareTo(resource1.getFilename()); } }); for (Resource file : scriptsAllowedOutsideOfProject) { console.log("\t" + GrailsNameUtils.getScriptName(file.getFilename())); } console.addStatus("Run 'grails help' for a complete list of available scripts."); return -1; }