Files
filebrowser/runner/parser.go
T

36 lines
717 B
Go
Raw Normal View History

2019-01-05 22:44:33 +00:00
package runner
import (
"os/exec"
2019-07-03 18:41:36 +01:00
"github.com/caddyserver/caddy"
2020-06-01 01:12:36 +02:00
"github.com/filebrowser/filebrowser/v2/settings"
2019-01-05 22:44:33 +00:00
)
// ParseCommand parses the command taking in account if the current
// instance uses a shell to run the commands or just calls the binary
// directyly.
func ParseCommand(s *settings.Settings, raw string) ([]string, error) {
2020-06-01 01:12:36 +02:00
var command []string
2019-01-05 22:44:33 +00:00
if len(s.Shell) == 0 {
cmd, args, err := caddy.SplitCommandAndArgs(raw)
if err != nil {
return nil, err
}
_, err = exec.LookPath(cmd)
if err != nil {
return nil, err
}
command = append(command, cmd)
command = append(command, args...)
} else {
2020-06-01 01:12:36 +02:00
command = append(s.Shell, raw) //nolint:gocritic
2019-01-05 22:44:33 +00:00
}
return command, nil
}