You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by sa...@apache.org on 2014/07/31 10:06:43 UTC
git commit: Adding resource path auto completion support
Repository: stratos
Updated Branches:
refs/heads/master b60c67b57 -> 75d3efbf2
Adding resource path auto completion support
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/75d3efbf
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/75d3efbf
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/75d3efbf
Branch: refs/heads/master
Commit: 75d3efbf23d22dc8868f3d8745a9e63a318fd22b
Parents: b60c67b
Author: sajhak <sa...@gmail.com>
Authored: Thu Jul 31 13:36:25 2014 +0530
Committer: sajhak <sa...@gmail.com>
Committed: Thu Jul 31 13:36:25 2014 +0530
----------------------------------------------------------------------
.../stratos/cli/completer/CommandCompleter.java | 9 ++++
.../cli/completer/StratosFileNameCompleter.java | 48 ++++++++++++++++++++
2 files changed, 57 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/75d3efbf/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/CommandCompleter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/CommandCompleter.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/CommandCompleter.java
index 4f7eb09..0ba3cd8 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/CommandCompleter.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/CommandCompleter.java
@@ -26,6 +26,7 @@ import java.util.Map;
import jline.console.completer.ArgumentCompleter;
import jline.console.completer.Completer;
+import jline.console.completer.FileNameCompleter;
import jline.console.completer.StringsCompleter;
import org.apache.commons.cli.Option;
@@ -51,16 +52,20 @@ public class CommandCompleter implements Completer {
private final Completer helpCommandCompleter;
private final Completer defaultCommandCompleter;
+
+ private final Completer fileNameCompleter;
public CommandCompleter(Map<String, Command<StratosCommandContext>> commands) {
if (logger.isDebugEnabled()) {
logger.debug("Creating auto complete for {} commands", commands.size());
}
+ fileNameCompleter = new StratosFileNameCompleter();
argumentMap = new HashMap<String, Collection<String>>();
defaultCommandCompleter = new StringsCompleter(commands.keySet());
helpCommandCompleter = new ArgumentCompleter(new StringsCompleter(CliConstants.HELP_ACTION),
defaultCommandCompleter);
for (String action : commands.keySet()) {
+
Command<StratosCommandContext> command = commands.get(action);
Options commandOptions = command.getOptions();
if (commandOptions != null) {
@@ -87,6 +92,10 @@ public class CommandCompleter implements Completer {
@Override
public int complete(String buffer, int cursor, List<CharSequence> candidates) {
+
+ if(buffer.contains(CliConstants.RESOURCE_PATH_LONG_OPTION)) {
+ return fileNameCompleter.complete(buffer, cursor, candidates);
+ }
if (logger.isTraceEnabled()) {
logger.trace("Buffer: {}, cursor: {}", buffer, cursor);
logger.trace("Candidates {}", candidates);
http://git-wip-us.apache.org/repos/asf/stratos/blob/75d3efbf/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/StratosFileNameCompleter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/StratosFileNameCompleter.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/StratosFileNameCompleter.java
new file mode 100644
index 0000000..94e93cc
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/completer/StratosFileNameCompleter.java
@@ -0,0 +1,48 @@
+package org.apache.stratos.cli.completer;
+
+import java.io.File;
+import java.util.List;
+
+import org.apache.stratos.cli.utils.CliConstants;
+
+import jline.console.completer.FileNameCompleter;
+
+public class StratosFileNameCompleter extends FileNameCompleter {
+
+ @Override
+ public int complete(String buf, int arg1, List<CharSequence> candidates) {
+
+ String buffer = (buf == null) ? "" : buf;
+ String subString = null;
+ int index = buf.lastIndexOf("--"+CliConstants.RESOURCE_PATH_LONG_OPTION);
+ if (buf.length() >= index + 16) {
+ subString = buf.substring(index + 16);
+ }
+
+ String translated = (subString == null || subString.isEmpty()) ? buf
+ : subString;
+ if (translated.startsWith("~" + File.separator)) {
+ translated = System.getProperty("user.home")
+ + translated.substring(1);
+ } else if (translated.startsWith("." + File.separator)) {
+ translated = new File("").getAbsolutePath() + File.separator
+ + translated;
+ }
+
+ File f = new File(translated);
+
+ final File dir;
+
+ if (translated.endsWith(File.separator)) {
+ dir = f;
+ } else {
+ dir = f.getParentFile();
+ }
+
+ final File[] entries = (dir == null) ? new File[0] : dir.listFiles();
+
+ return matchFiles(buffer, translated, entries, candidates);
+
+ }
+
+}