@@ -11,8 +11,10 @@ export-env {
11
11
($x | describe ) == ' string'
12
12
}
13
13
14
- def has-env [name : string ] {
15
- $name in $env
14
+ def has-env [... names ] {
15
+ $names | each {|n |
16
+ $n in $env
17
+ } | all {|i | $i == true }
16
18
}
17
19
18
20
# Emulates a `test -z`, but btter as it handles e.g 'false'
@@ -23,46 +25,26 @@ export-env {
23
25
if ($parsed | describe ) == ' bool' {
24
26
$parsed
25
27
} else {
26
- not ($env | get $name | is-empty )
28
+ not ($env | get - i $name | is-empty )
27
29
}
28
30
} else {
29
31
false
30
32
}
31
33
}
32
34
33
- let is_windows = ($nu .os-info.name | str downcase ) == ' windows'
34
35
let virtual_env = ' __VIRTUAL_ENV__'
35
36
let bin = ' __BIN_NAME__'
36
- let path_sep = ( char esep )
37
- let path_name = (if $is_windows {
38
- if (has-env ' Path' ) {
37
+
38
+ let is_windows = ($nu .os-info.family ) == ' windows '
39
+ let path_name = ( if (has-env ' Path' ) {
39
40
' Path'
40
41
} else {
41
42
' PATH'
42
43
}
43
- } else {
44
- ' PATH'
45
- })
46
-
47
- let old_path = (
48
- if $is_windows {
49
- if (has-env ' Path' ) {
50
- $env .Path
51
- } else {
52
- $env .PATH
53
- }
54
- } else {
55
- $env .PATH
56
- } | if (is-string $in ) {
57
- # if Path/PATH is a string, make it a list
58
- $in | split row $path_sep | path expand
59
- } else {
60
- $in
61
- }
62
44
)
63
45
64
46
let venv_path = ([$virtual_env $bin ] | path join )
65
- let new_path = ($old_path | prepend $venv_path | str join $path_sep )
47
+ let new_path = ($env | get $path_name | prepend $venv_path )
66
48
67
49
let new_env = {
68
50
$path_name : $new_path
@@ -73,22 +55,18 @@ export-env {
73
55
$new_env
74
56
} else {
75
57
# Creating the new prompt for the session
76
- let virtual_prompt = (if (' __VIRTUAL_PROMPT__' == ' ' ) {
58
+ let virtual_prompt = (if (' __VIRTUAL_PROMPT__' | is-empty ) {
77
59
$' (char lparen )($virtual_env | path basename )(char rparen ) '
78
60
} else {
79
61
' (__VIRTUAL_PROMPT__) '
80
62
})
81
63
82
64
# Back up the old prompt builder
83
- let old_prompt_command = (if (has-env ' VIRTUAL_ENV' ) and (has-env ' _OLD_PROMPT_COMMAND' ) {
84
- $env ._OLD_PROMPT_COMMAND
85
- } else {
86
- if (has-env ' PROMPT_COMMAND' ) {
65
+ let old_prompt_command = (if (has-env ' PROMPT_COMMAND' ) {
87
66
$env .PROMPT_COMMAND
88
67
} else {
89
68
' '
90
- }
91
- })
69
+ })
92
70
93
71
# If there is no default prompt, then only the env is printed in the prompt
94
72
let new_prompt = (if (has-env ' PROMPT_COMMAND' ) {
@@ -102,8 +80,6 @@ export-env {
102
80
})
103
81
104
82
$new_env | merge {
105
- _OLD_VIRTUAL_PATH : ($old_path | str join $path_sep )
106
- _OLD_PROMPT_COMMAND : $old_prompt_command
107
83
PROMPT_COMMAND : $new_prompt
108
84
VIRTUAL_PROMPT : $virtual_prompt
109
85
}
0 commit comments