Merge pull request #5212 from sebito91/master
adding quit and ctrl-d support to influx clipull/5215/head
commit
3489c30b85
|
@ -68,7 +68,7 @@ func New(version string) *CommandLine {
|
||||||
// Run executes the CLI
|
// Run executes the CLI
|
||||||
func (c *CommandLine) Run() {
|
func (c *CommandLine) Run() {
|
||||||
// register OS signals for graceful termination
|
// register OS signals for graceful termination
|
||||||
signal.Notify(c.osSignals, os.Kill, os.Interrupt, syscall.SIGTERM)
|
signal.Notify(c.osSignals, os.Kill, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGHUP)
|
||||||
|
|
||||||
var promptForPassword bool
|
var promptForPassword bool
|
||||||
// determine if they set the password flag but provided no value
|
// determine if they set the password flag but provided no value
|
||||||
|
@ -180,7 +180,10 @@ func (c *CommandLine) Run() {
|
||||||
c.exit()
|
c.exit()
|
||||||
default:
|
default:
|
||||||
l, e := c.Line.Prompt("> ")
|
l, e := c.Line.Prompt("> ")
|
||||||
if e != nil {
|
if e == io.EOF {
|
||||||
|
// Instead of die, register that someone exited the program gracefully
|
||||||
|
l = "exit"
|
||||||
|
} else if e != nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if c.ParseCommand(l) {
|
if c.ParseCommand(l) {
|
||||||
|
@ -201,7 +204,7 @@ func (c *CommandLine) ParseCommand(cmd string) bool {
|
||||||
|
|
||||||
if len(tokens) > 0 {
|
if len(tokens) > 0 {
|
||||||
switch tokens[0] {
|
switch tokens[0] {
|
||||||
case "exit":
|
case "exit", "quit":
|
||||||
// signal the program to exit
|
// signal the program to exit
|
||||||
close(c.Quit)
|
close(c.Quit)
|
||||||
case "gopher":
|
case "gopher":
|
||||||
|
@ -731,7 +734,7 @@ func (c *CommandLine) help() {
|
||||||
consistency <level> sets write consistency level: any, one, quorum, or all
|
consistency <level> sets write consistency level: any, one, quorum, or all
|
||||||
history displays command history
|
history displays command history
|
||||||
settings outputs the current settings for the shell
|
settings outputs the current settings for the shell
|
||||||
exit quits the influx shell
|
exit/quit/ctrl+d quits the influx shell
|
||||||
|
|
||||||
show databases show database names
|
show databases show database names
|
||||||
show series show series information
|
show series show series information
|
||||||
|
|
|
@ -237,6 +237,27 @@ func TestParseCommand_Exit(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParseCommand_Quit(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
tests := []struct {
|
||||||
|
cmd string
|
||||||
|
}{
|
||||||
|
{cmd: "quit"},
|
||||||
|
{cmd: " quit"},
|
||||||
|
{cmd: "quit "},
|
||||||
|
{cmd: "Quit "},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
c := cli.CommandLine{Quit: make(chan struct{}, 1)}
|
||||||
|
c.ParseCommand(test.cmd)
|
||||||
|
// channel should be closed
|
||||||
|
if _, ok := <-c.Quit; ok {
|
||||||
|
t.Fatalf(`Command "quit" failed for %q.`, test.cmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseCommand_Use(t *testing.T) {
|
func TestParseCommand_Use(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
c := cli.CommandLine{}
|
c := cli.CommandLine{}
|
||||||
|
|
Loading…
Reference in New Issue