fix: sync Pwd()

relates to #2038
This commit is contained in:
Jan De Dobbeleer 2022-04-09 19:43:58 +02:00 committed by Jan De Dobbeleer
parent 10c0bc7383
commit 40470f7d22

View file

@ -316,7 +316,9 @@ func (env *ShellEnvironment) Getenv(key string) string {
func (env *ShellEnvironment) Pwd() string {
defer env.trace(time.Now(), "Pwd")
env.lock.Lock()
defer func() {
env.lock.Unlock()
env.log(Debug, "Pwd", env.cwd)
}()
if env.cwd != "" {
@ -728,21 +730,8 @@ func (env *ShellEnvironment) TemplateCache() *TemplateCache {
return tmplCache
}
func (env *ShellEnvironment) DirMatchesOneOf(dir string, regexes []string) (match bool) {
// sometimes the function panics inside golang, we want to silence that error
// and assume that there's no match. Not perfect, but better than crashing
// for the time being until we figure out what the actual root cause is
defer func() {
if err := recover(); err != nil {
message := fmt.Sprintf("%s", err)
env.log(Error, "DirMatchesOneOf", message)
match = false
}
}()
env.lock.Lock()
defer env.lock.Unlock()
match = dirMatchesOneOf(dir, env.Home(), env.GOOS(), regexes)
return
func (env *ShellEnvironment) DirMatchesOneOf(dir string, regexes []string) bool {
return dirMatchesOneOf(dir, env.Home(), env.GOOS(), regexes)
}
func dirMatchesOneOf(dir, home, goos string, regexes []string) bool {