throw new UsageException(res.get("usage.-s"));
}
final String p1 = p.at(1);
- final File file = Path.resolve(env.getCurrentDirectory(), p1);
- if (!file.isFile()) {
- throw new UsageException(res.get("usage.-s"));
+ if (p1.equals(".")) {
+ env.initializeScriptContext();
+ outputMessage("i.script-context-initialized");
+ return true;
+ }
+ final File file;
+ if (p1.contains(".")) { // by extension
+ file = Path.resolve(env.getCurrentDirectory(), p1);
+ if (!file.exists() || !file.isFile()) {
+ outputMessage("e.file-not-exists", p1);
+ return true;
+ }
+ log.debug("script file: %s", file.getAbsolutePath());
+ } else { // by name
+ file = null;
+ log.debug("script name: %s", p1);
+ }
+ ScriptEngine engine = (file == null)
+ ? new ScriptEngineManager().getEngineByName(p1)
+ : new ScriptEngineManager().getEngineByExtension(Path.getExtension(file));
+ if (engine == null) {
+ outputMessage("e.unsupported", p1);
+ return true;
}
- log.debug("-s %s", file.getAbsolutePath());
- ScriptEngineManager factory = new ScriptEngineManager();
- ScriptEngine engine = factory.getEngineByExtension(Path.getExtension(file));
+ engine.setContext(env.getScriptContext());
engine.put("connection", env.getCurrentConnection());
engine.put("conn", env.getCurrentConnection());
engine.put("patameter", p);