From b28f8a40ec9e15050916e2aebc963fe09f0fcfd4 Mon Sep 17 00:00:00 2001 From: evilsocket Date: Tue, 20 Feb 2018 02:39:59 +0100 Subject: [PATCH] fix: fixed bug in prompt parsing (fixes #58) --- session/prompt.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/session/prompt.go b/session/prompt.go index 708b2a59..b5c4b0b3 100644 --- a/session/prompt.go +++ b/session/prompt.go @@ -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 { } @@ -79,11 +79,11 @@ func (p Prompt) Render(s *Session) string { prompt = strings.Replace(prompt, tok, cb(s), -1) } - m := envRe.FindStringSubmatch(prompt) - if len(m) == 2 { - name := m[1] + m := envRe.FindAllString(prompt, -1) + for _, match := range m { + name := strings.Trim(strings.Replace(match, "env.", "", -1), "{}") _, 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