Search in sources :

Example 1 with JsTool

use of com.bluenimble.platform.icli.mgm.utils.JsTool in project serverless by bluenimble.

the class MacroSourceCommand method execute.

@Override
public CommandResult execute(final Tool tool, Map<String, CommandOption> options) throws CommandExecutionException {
    InputStream input = null;
    SimpleBindings bindings = new SimpleBindings();
    String command = (String) tool.currentContext().get(ToolContext.CommandLine);
    if (!Lang.isNullOrEmpty(command)) {
        bindings.put("Command", command);
    }
    bindings.put("Home", BlueNimble.Work);
    bindings.put("Config", BlueNimble.Config);
    bindings.put("Tool", new JsTool(tool));
    bindings.put(JavaClass, new Function<String, Class<?>>() {

        @Override
        public Class<?> apply(String type) {
            try {
                return MacroSourceCommand.class.getClassLoader().loadClass(type);
            } catch (ClassNotFoundException cnfe) {
                throw new RuntimeException(cnfe);
            }
        }
    });
    bindings.put("Vars", tool.getContext(Tool.ROOT_CTX).get(ToolContext.VARS));
    Keys keys = BlueNimble.keys();
    if (keys != null) {
        bindings.put("Keys", keys.json());
    }
    try {
        input = new FileInputStream(script);
        List<InputStream> blocks = new ArrayList<InputStream>();
        blocks.add(new ByteArrayInputStream(Native.getBytes()));
        blocks.add(input);
        Engine.eval(new InputStreamReader(new SequenceInputStream(Collections.enumeration(blocks))), bindings);
    } catch (Exception e) {
        throw new CommandExecutionException(e.getMessage(), e);
    } finally {
        IOUtils.closeQuietly(input);
    }
    return null;
}
Also used : JsTool(com.bluenimble.platform.icli.mgm.utils.JsTool) InputStreamReader(java.io.InputStreamReader) ByteArrayInputStream(java.io.ByteArrayInputStream) SequenceInputStream(java.io.SequenceInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) FileInputStream(java.io.FileInputStream) CommandExecutionException(com.bluenimble.platform.cli.command.CommandExecutionException) SequenceInputStream(java.io.SequenceInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) SimpleBindings(javax.script.SimpleBindings) Keys(com.bluenimble.platform.icli.mgm.Keys) CommandExecutionException(com.bluenimble.platform.cli.command.CommandExecutionException)

Aggregations

CommandExecutionException (com.bluenimble.platform.cli.command.CommandExecutionException)1 Keys (com.bluenimble.platform.icli.mgm.Keys)1 JsTool (com.bluenimble.platform.icli.mgm.utils.JsTool)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 SequenceInputStream (java.io.SequenceInputStream)1 ArrayList (java.util.ArrayList)1 SimpleBindings (javax.script.SimpleBindings)1