fix: fixed bug in prompt parsing (fixes #58)

This commit is contained in:
evilsocket 2018-02-20 02:39:59 +01:00
commit b28f8a40ec

View file

@ -56,7 +56,7 @@ var PromptCallbacks = map[string]func(s *Session) string{
}, },
} }
var envRe = regexp.MustCompile("{env\\.(.+)}") var envRe = regexp.MustCompile("{env\\.([^}]+)}")
type Prompt struct { type Prompt struct {
} }
@ -79,11 +79,11 @@ func (p Prompt) Render(s *Session) string {
prompt = strings.Replace(prompt, tok, cb(s), -1) prompt = strings.Replace(prompt, tok, cb(s), -1)
} }
m := envRe.FindStringSubmatch(prompt) m := envRe.FindAllString(prompt, -1)
if len(m) == 2 { for _, match := range m {
name := m[1] name := strings.Trim(strings.Replace(match, "env.", "", -1), "{}")
_, value := s.Env.Get(name) _, value := s.Env.Get(name)
prompt = strings.Replace(prompt, m[0], value, -1) prompt = strings.Replace(prompt, match, value, -1)
} }
// make sure an user error does not screw all terminal // make sure an user error does not screw all terminal