mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-09-18 23:47:55 +08:00
support semicolon seperated command lines
This commit is contained in:
@@ -45,42 +45,51 @@ func RunShell(options ShellOptions) {
|
||||
return
|
||||
}
|
||||
|
||||
cmds := reg.FindAllString(cmd, -1)
|
||||
if len(cmds) == 0 {
|
||||
continue
|
||||
} else {
|
||||
line.AppendHistory(cmd)
|
||||
|
||||
args := make([]string, len(cmds[1:]))
|
||||
|
||||
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" {
|
||||
for _, c := range strings.Split(cmd, ";") {
|
||||
if processEachCmd(reg, c, commandEnv) {
|
||||
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
|
||||
}
|
||||
}
|
||||
if !foundCommand {
|
||||
fmt.Fprintf(os.Stderr, "unknown command: %v\n", cmd)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
args := make([]string, len(cmds[1:]))
|
||||
|
||||
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)
|
||||
}
|
||||
foundCommand = true
|
||||
}
|
||||
}
|
||||
if !foundCommand {
|
||||
fmt.Fprintf(os.Stderr, "unknown command: %v\n", cmd)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func printGenericHelp() {
|
||||
msg :=
|
||||
`Type: "help <command>" for help on <command>
|
||||
|
Reference in New Issue
Block a user