Add bash completion for spring command

* Added src/main/content/bash_completion.d/spring
* Also made all commands alias to "--<self>" so
"--help" is a synonym for "help" (for instance). This
helps with the completion generation.

[Fixes #54827292]
This commit is contained in:
Dave Syer 2013-08-08 10:59:00 +01:00
parent f5bae04714
commit 3b9df63f73
4 changed files with 86 additions and 2 deletions

View File

@ -0,0 +1,36 @@
# bash completion for spring
# Installation: source this file locally in a terminal or from
# ~/.bashrc or put it in /etc/bash_completions.d (debian)
_spring()
{
local cur prev help helps words cword command commands i
COMPREPLY=()
_get_comp_words_by_ref cur prev words cword
commands=( `_parse_help spring | sed -e 's/--//'` )
if [[ "$prev" == spring ]]; then
for command in "${commands[@]}"; do
if [[ "${cur}${command#$cur*}" == "$command" ]]; then
COMPREPLY+=("$command")
fi
done
return 0
else
for command in "${commands[@]}"; do
if [[ "$prev" == "$command" && "$cur" == -* ]]; then
helps=( `_parse_help 'spring help' $prev` )
for help in "${helps[@]:2}"; do
if [[ "${cur}${help#$cur*}" == "$help" ]]; then
COMPREPLY+=("$help")
fi
done
return 0
fi
done
fi
_filedir
} && complete -F _spring spring

View File

@ -126,6 +126,9 @@ public class SpringCli {
}
private Command find(String name) {
if (name.startsWith("--")) {
name = name.substring("--".length());
}
for (Command candidate : this.commands) {
if (candidate.getName().equals(name)) {
return candidate;
@ -143,10 +146,17 @@ public class SpringCli {
for (Command command : this.commands) {
String usageHelp = command.getUsageHelp();
String description = command.getDescription();
Log.info(String.format("\n %1$s %2$-15s\n %3$s", command.getName(),
String name = command.getName();
if (!name.startsWith("--")) {
name = "--" + name + ", " + name;
}
Log.info(String.format("\n %1$s %2$-15s\n %3$s", name,
(usageHelp == null ? "" : usageHelp), (description == null ? ""
: description)));
}
Log.info(String.format("\n %1$s %2$-15s\n %3$s", "-d, --debug",
"Verbose mode",
"Print additional status information for the command you are running"));
Log.info("");
Log.info("See '" + CLI_APP
+ " help <command>' for more information on a specific command.");

View File

@ -27,7 +27,7 @@ import org.springframework.boot.cli.Log;
public class VersionCommand extends AbstractCommand {
public VersionCommand() {
super("--version", "Show the version");
super("version", "Show the version");
}
@Override

View File

@ -0,0 +1,38 @@
/*
* Copyright 2012-2013 the original author or authors.
*
* Licensed 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.springframework.boot.cli.command;
import org.junit.Test;
import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertThat;
/**
* @author Dave Syer
*/
public class OptionParsingCommandTests {
@Test
public void optionHelp() {
OptionHandler handler = new OptionHandler();
handler.option("bar", "Bar");
OptionParsingCommand command = new OptionParsingCommand("foo", "Foo", handler) {
};
assertThat(command.getHelp(), containsString("--bar"));
}
}