mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-24 11:09:12 +08:00
support semicolon seperated command lines
This commit is contained in:
parent
73564e6a01
commit
662b5d0cf7
@ -236,24 +236,8 @@ func (ms *MasterServer) startAdminScripts() {
|
|||||||
for range c {
|
for range c {
|
||||||
if ms.Topo.IsLeader() {
|
if ms.Topo.IsLeader() {
|
||||||
for _, line := range scriptLines {
|
for _, line := range scriptLines {
|
||||||
|
for _, c := range strings.Split(line, ";") {
|
||||||
cmds := reg.FindAllString(line, -1)
|
processEachCmd(reg, c, commandEnv)
|
||||||
if len(cmds) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
args := make([]string, len(cmds[1:]))
|
|
||||||
for i := range args {
|
|
||||||
args[i] = strings.Trim(string(cmds[1+i]), "\"'")
|
|
||||||
}
|
|
||||||
cmd := strings.ToLower(cmds[0])
|
|
||||||
|
|
||||||
for _, c := range shell.Commands {
|
|
||||||
if c.Name() == cmd {
|
|
||||||
glog.V(0).Infof("executing: %s %v", cmd, args)
|
|
||||||
if err := c.Do(args, commandEnv, os.Stdout); err != nil {
|
|
||||||
glog.V(0).Infof("error: %v", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -261,6 +245,27 @@ func (ms *MasterServer) startAdminScripts() {
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func processEachCmd(reg *regexp.Regexp, line string, commandEnv *shell.CommandEnv) {
|
||||||
|
cmds := reg.FindAllString(line, -1)
|
||||||
|
if len(cmds) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
args := make([]string, len(cmds[1:]))
|
||||||
|
for i := range args {
|
||||||
|
args[i] = strings.Trim(string(cmds[1+i]), "\"'")
|
||||||
|
}
|
||||||
|
cmd := strings.ToLower(cmds[0])
|
||||||
|
|
||||||
|
for _, c := range shell.Commands {
|
||||||
|
if c.Name() == cmd {
|
||||||
|
glog.V(0).Infof("executing: %s %v", cmd, args)
|
||||||
|
if err := c.Do(args, commandEnv, os.Stdout); err != nil {
|
||||||
|
glog.V(0).Infof("error: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (ms *MasterServer) createSequencer(option *MasterOption) sequence.Sequencer {
|
func (ms *MasterServer) createSequencer(option *MasterOption) sequence.Sequencer {
|
||||||
var seq sequence.Sequencer
|
var seq sequence.Sequencer
|
||||||
v := util.GetViper()
|
v := util.GetViper()
|
||||||
|
@ -45,42 +45,51 @@ func RunShell(options ShellOptions) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
cmds := reg.FindAllString(cmd, -1)
|
for _, c := range strings.Split(cmd, ";") {
|
||||||
if len(cmds) == 0 {
|
if processEachCmd(reg, c, commandEnv) {
|
||||||
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" {
|
|
||||||
return
|
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() {
|
func printGenericHelp() {
|
||||||
msg :=
|
msg :=
|
||||||
`Type: "help <command>" for help on <command>
|
`Type: "help <command>" for help on <command>
|
||||||
|
Loading…
Reference in New Issue
Block a user