Skip to content

Commit cea99eb

Browse files
committed
Use regex to support :'s and ;'s in quotes according to the sh standard
1 parent 8398287 commit cea99eb

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

nu-hooks/nu-hooks/direnv/config.nu

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,6 @@
2424

2525
direnv export json | from json | default {} | load-env
2626
# Direnv outputs $PATH as a string, but nushell silently breaks if isn't a list-like table.
27-
$env.PATH = $env.PATH | split row (char env_sep)
27+
# The following behemoth of Nu code turns this into nu's format while following the standards of how to handle quotes
28+
$env.PATH = $env.PATH | parse --regex ('' + `((?:(?:"(?:(?:\\[\\"])|.)*?")|(?:'.*?')|[^` + (char env_sep) + `]*)*)`) | each {|x| $x.capture0 | parse --regex `(?:"((?:(?:\\"|.))*?)")|(?:'(.*?)')|([^'"]*)` | each {|y| if ($y.capture0 != "") { $y.capture0 | str replace -ar `\\([\\"])` `$1` } else if ($y.capture1 != "") { $y.capture1 } else $y.capture2 } | str join }
2829
}

0 commit comments

Comments
 (0)