Author: pidster
Date: Mon Jan 17 17:53:28 2011
New Revision: 1060024
URL: http://svn.apache.org/viewvc?rev=1060024&view=rev
Log:
Use Commons CLI / CliBuilder and JLine
Modified:
incubator/kitty/trunk/src/main/java/org/apache/kitty/CmdShell.groovy
incubator/kitty/trunk/src/main/java/org/apache/kitty/Main.groovy
Modified: incubator/kitty/trunk/src/main/java/org/apache/kitty/CmdShell.groovy
URL:
http://svn.apache.org/viewvc/incubator/kitty/trunk/src/main/java/org/apache/kitty/CmdShell.groovy?rev=1060024&r1=1060023&r2=1060024&view=diff
==============================================================================
--- incubator/kitty/trunk/src/main/java/org/apache/kitty/CmdShell.groovy
(original)
+++ incubator/kitty/trunk/src/main/java/org/apache/kitty/CmdShell.groovy Mon
Jan 17 17:53:28 2011
@@ -1,3 +1,4 @@
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -15,11 +16,10 @@
* limitations under the License.
*/
-
package org.apache.kitty
-import java.io.BufferedReader
-import java.io.InputStreamReader
+import jline.ConsoleReader
+import jline.History
import org.apache.kitty.client.Client
import org.apache.kitty.utils.Constants
@@ -38,13 +38,16 @@ import org.apache.kitty.utils.Help
*/
class CmdShell {
- def static final PROMPT = "kitty>"
+ def static final PROMPT = "kitty> "
+
static String HOST = "localhost"
+
static String PORT = "9024"
+
static Client client
+
def static remote
- static InputStreamReader inReader;
- static BufferedReader bReader;
+
static commands = [
"help",
"connect",
@@ -74,18 +77,33 @@ class CmdShell {
}
static startShell() {
- def input
- inReader = new InputStreamReader(System.in)
- bReader = new BufferedReader(inReader)
+
client = new Client()
- while (!(input.equals("exit"))) {
- print PROMPT
- input = getUserInput()
- inputHandler(input)
+ def history = new History()
+ def reader = new ConsoleReader()
+
+ reader.setBellEnabled(false)
+ reader.setUseHistory(true)
+ reader.setDefaultPrompt(PROMPT)
+ reader.setHistory(history)
+
+ LOOP: while (true) {
+ def input = reader.readLine().trim()
+
+ if (input.length() == 0)
+ continue
+
+ if (["exit", "quit"].contains(input.tokenize().get(0)))
+ break LOOP
+
+ try {
+ inputHandler(input)
+ }
+ catch (Exception e) {
+ println e.getMessage()
+ }
}
- inReader.close()
- bReader.close()
}
static inputHandler(String input) {
@@ -97,7 +115,7 @@ class CmdShell {
input = params[0]
}
else {
- params = {input}
+ params = { input }
}
if (commands.contains(input)) {
@@ -199,12 +217,6 @@ class CmdShell {
}
}
- static String getUserInput() {
- def userInput
- userInput = bReader.readLine()
- return userInput;
- }
-
static cmdHelp() {
Help h = new Help()
println h.toString()
Modified: incubator/kitty/trunk/src/main/java/org/apache/kitty/Main.groovy
URL:
http://svn.apache.org/viewvc/incubator/kitty/trunk/src/main/java/org/apache/kitty/Main.groovy?rev=1060024&r1=1060023&r2=1060024&view=diff
==============================================================================
--- incubator/kitty/trunk/src/main/java/org/apache/kitty/Main.groovy (original)
+++ incubator/kitty/trunk/src/main/java/org/apache/kitty/Main.groovy Mon Jan 17
17:53:28 2011
@@ -1,42 +1,58 @@
/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.kitty
/**
-* <pre>
-* <b>Description</b>
-* <p>
-* This is the entry point to the remote management framework.
-* </p>
-* </pre>
-*
-* @version $Id$
-*
-*/
+ * <pre>
+ * <b>Description</b>
+ * <p>
+ * This is the entry point to the remote management framework.
+ * </p>
+ * </pre>
+ *
+ * @version $Id$
+ *
+ */
class Main {
-
- def config
-
- public init()
- {
- config = new ConfigSlurper().parse(new
File('kittyConfig.groovy')).toString()
- //TODO
- }
+ static final String KITTY_USAGE = "java -jar apache-kitty.jar <arg>"
+
+ static main(args) {
+
+ def cli = new CliBuilder(usage: KITTY_USAGE)
+ cli.h(longOpt: 'help', 'Show help')
+ cli.i(longOpt: 'interactive', 'Launch in an interactive prompt
(default)')
+ cli.s(longOpt: 'script', 'Launch inline for scripted access')
+
+ /*
+ cli.d(longOpt: 'debug', 'Display debug information on output')
+ cli.q(longOpt: 'quiet', 'Restrict output to bare minimum')
+ cli.v(longOpt: 'verbose', 'Display extra information on
output')
+ */
+
+ def opt = cli.parse(args)
+
+ if (opt?.h) {
+ cli.usage()
+ return
+ }
+
+ CmdShell.startShell()
+ }
}