diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-04-23 14:01:46 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-04-23 14:01:46 -0700 |
| commit | 662b5d0cf7caade0a2b6acd3442642036b910c72 (patch) | |
| tree | 5ec8754cfee30639773ba75a0d11b141f446afe1 /weed/shell/shell_liner.go | |
| parent | 73564e6a01770316f5ab57e7f4ba8227cedbf1dd (diff) | |
| download | seaweedfs-662b5d0cf7caade0a2b6acd3442642036b910c72.tar.xz seaweedfs-662b5d0cf7caade0a2b6acd3442642036b910c72.zip | |
support semicolon seperated command lines
Diffstat (limited to 'weed/shell/shell_liner.go')
| -rw-r--r-- | weed/shell/shell_liner.go | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/weed/shell/shell_liner.go b/weed/shell/shell_liner.go index 0ad46254e..4632a1fb0 100644 --- a/weed/shell/shell_liner.go +++ b/weed/shell/shell_liner.go @@ -45,40 +45,49 @@ func RunShell(options ShellOptions) { return } - cmds := reg.FindAllString(cmd, -1) - if len(cmds) == 0 { - continue - } else { - line.AppendHistory(cmd) + for _, c := range strings.Split(cmd, ";") { + if processEachCmd(reg, c, commandEnv) { + return + } + } + } +} - args := make([]string, len(cmds[1:])) +func processEachCmd(reg *regexp.Regexp, cmd string, commandEnv *CommandEnv) bool { + cmds := reg.FindAllString(cmd, -1) + if len(cmds) == 0 { + return false + } else { + line.AppendHistory(cmd) - for i := range args { - args[i] = strings.Trim(string(cmds[1+i]), "\"'") - } + args := make([]string, len(cmds[1:])) - cmd := strings.ToLower(cmds[0]) - if cmd == "help" || cmd == "?" { - printHelp(cmds) - } else if cmd == "exit" || cmd == "quit" { - return - } else { - foundCommand := false - for _, c := range Commands { - if c.Name() == cmd || c.Name() == "fs."+cmd { - if err := c.Do(args, commandEnv, os.Stdout); err != nil { - fmt.Fprintf(os.Stderr, "error: %v\n", err) - } - foundCommand = true + for i := range args { + args[i] = strings.Trim(string(cmds[1+i]), "\"'") + } + + cmd := strings.ToLower(cmds[0]) + if cmd == "help" || cmd == "?" { + printHelp(cmds) + } else if cmd == "exit" || cmd == "quit" { + return true + } else { + foundCommand := false + for _, c := range Commands { + if c.Name() == cmd || c.Name() == "fs."+cmd { + if err := c.Do(args, commandEnv, os.Stdout); err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) } - } - if !foundCommand { - fmt.Fprintf(os.Stderr, "unknown command: %v\n", cmd) + foundCommand = true } } - + if !foundCommand { + fmt.Fprintf(os.Stderr, "unknown command: %v\n", cmd) + } } + } + return false } func printGenericHelp() { |
