HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2012-07-26 e30d26fd77c40ff7a2347d810353d5ebc34f9e6f
delete is a reserved word in javascript: use remove instead
interactive mode
4 files modified
42 ■■■■ changed files
hsarjcli/src/de/hsadmin/jscli/CommandlineParser.java 5 ●●●●● patch | view | raw | blame | history
hsarjcli/src/de/hsadmin/jscli/JSONFormatter.java 1 ●●●● patch | view | raw | blame | history
hsarjcli/src/de/hsadmin/jscli/Main.java 31 ●●●● patch | view | raw | blame | history
hsarjcli/src/de/hsadmin/jscli/ScriptClient.java 5 ●●●● patch | view | raw | blame | history
hsarjcli/src/de/hsadmin/jscli/CommandlineParser.java
@@ -19,6 +19,7 @@
        opts.addOption("r", "runas", true, "specify run-as user");
        opts.addOption("e", "expr", true, "expression to execute");
        opts.addOption("f", "file", true, "script file to execute");
        opts.addOption("i", "interactive", false, "interactive shell");
        PosixParser parser = new PosixParser();
        try {
            if (args.length < 1) {
@@ -51,6 +52,10 @@
        return cmd.getOptionValue("file", null);
    }
    
    public boolean isInteractive() {
        return cmd.hasOption("interactive");
    }
    public void printHelp() {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("hsscript", opts);
hsarjcli/src/de/hsadmin/jscli/JSONFormatter.java
@@ -62,6 +62,7 @@
    }
    
    public String format(Object object) {
        if (object == null) return "";
        if (object instanceof List<?>) {
            return formatList((List<?>) object);
        }
hsarjcli/src/de/hsadmin/jscli/Main.java
@@ -1,5 +1,6 @@
package de.hsadmin.jscli;
import java.io.Console;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
@@ -12,11 +13,8 @@
        try {
            JSONFormatter formatter = new JSONFormatter();
            CommandlineParser cmdParser = new CommandlineParser(args);
            ScriptClient scriptClient = new ScriptClient(cmdParser.getUser(), cmdParser.getRunAs());
            String expr = cmdParser.getExpression();
            if (expr != null && expr.length() > 0) {
                System.out.println(formatter.format(scriptClient.execute(expr)));
            }
            String runAs = cmdParser.getRunAs();
            ScriptClient scriptClient = new ScriptClient(cmdParser.getUser(), runAs);
            String file = cmdParser.getFile();
            if (file != null && file.length() > 0) {
                if ("-".equals(file)) {
@@ -30,6 +28,29 @@
                    }
                }
            }
            String expr = cmdParser.getExpression();
            if (expr != null && expr.length() > 0) {
                System.out.println(formatter.format(scriptClient.execute(expr)));
            }
            if (cmdParser.isInteractive()) {
                Console console = System.console();
                if (console == null) {
                    throw new JSCliException("fatal error: console not found");
                }
                String command = console.readLine("%s@hsadmin>", runAs);
                while (!("bye".equals(command.trim()) || "exit".equals(command.trim()) || "quit".equals(command.trim()))) {
                    try {
                        console.printf("%s\n", formatter.format(scriptClient.execute(command)));
                    } catch (Exception e) {
                        console.printf("ERR: %s\n", e.getLocalizedMessage());
                    }
                    command = console.readLine("%s@hsadmin>", runAs);
                    while (command.endsWith("\\")) {
                        command = command.substring(0, command.length() - 1) +
                                console.readLine(">");
                    }
                }
            }
        } catch (JSCliException e) {
            System.err.println(e.getMessage());
            System.exit(-1);
hsarjcli/src/de/hsadmin/jscli/ScriptClient.java
@@ -51,12 +51,15 @@
            if (parts.length == 2) {
                String module = parts[0];
                String function = parts[1];
                if ("delete".equals(function)) {
                    function = "remove";
                }
                try {
                    engine.eval("if (typeof " + module + " === 'undefined') " +
                                "{ var " + module + " = { }; };\n" +
                                module + "['" + function + "'] = function(json) { " +
                                "var mod = '" + module + "'; " +
                                "var fct = '" + function + "'; " +
                                ("remove".equals(function) ? "var fct = 'delete'; " : "var fct = '" + function + "'; ") +
                                "var params = new ArrayList(); " +
                                "params.add(casgrantingticket.getRunAs()); " + 
                                "params.add(casgrantingticket.getTicket()); " +