@@ -15,6 +15,21 @@ export-env {
15
15
$name in (env ).name
16
16
}
17
17
18
+ # Emulates a `test -z`, but btter as it handles e.g 'false'
19
+ def is-env-true [name : string ] {
20
+ if (has-env $name ) {
21
+ # Try to parse 'true', '0', '1', and fail if not convertible
22
+ let parsed = do - i { $env | get $name | into bool }
23
+ if ($parsed | describe ) == ' bool' {
24
+ $parsed
25
+ } else {
26
+ not ($env | get $name | is-empty )
27
+ }
28
+ } else {
29
+ false
30
+ }
31
+ }
32
+
18
33
let is_windows = ($nu .os-info.name | str downcase ) == ' windows'
19
34
let virtual_env = ' __VIRTUAL_ENV__'
20
35
let bin = ' __BIN_NAME__'
@@ -49,44 +64,53 @@ export-env {
49
64
let venv_path = ([$virtual_env $bin ] | path join )
50
65
let new_path = ($old_path | prepend $venv_path | str collect $path_sep )
51
66
52
- # Creating the new prompt for the session
53
- let virtual_prompt = if (' __VIRTUAL_PROMPT__' == ' ' ) {
54
- $' (char lparen )($virtual_env | path basename )(char rparen ) '
55
- } else {
56
- ' (__VIRTUAL_PROMPT__) '
67
+ let new_env = {
68
+ $path_name : $new_path
69
+ VIRTUAL_ENV : $virtual_env
57
70
}
58
71
59
- # Back up the old prompt builder
60
- let old_prompt_command = if (has-env ' VIRTUAL_ENV' ) and (has-env ' _OLD_PROMPT_COMMAND' ) {
61
- $env ._OLD_PROMPT_COMMAND
72
+ let new_env = if (is-env-true ' VIRTUAL_ENV_DISABLE_PROMPT' ) {
73
+ $new_env
62
74
} else {
63
- if ( has-env ' PROMPT_COMMAND ' ) {
64
- $env .PROMPT_COMMAND
65
- } else {
66
- ' '
67
- }
68
- }
75
+ # Creating the new prompt for the session
76
+ let virtual_prompt = if ( ' __VIRTUAL_PROMPT__ ' == ' ' ) {
77
+ $' ( char lparen )( $virtual_env | path basename )( char rparen ) '
78
+ } else {
79
+ ' (__VIRTUAL_PROMPT__) '
80
+ }
69
81
70
- # If there is no default prompt, then only the env is printed in the prompt
71
- let new_prompt = if (has-env ' PROMPT_COMMAND ' ) {
72
- if ( $old_prompt_command | describe ) == ' block ' {
73
- { $' ( $virtual_prompt )( do $old_prompt_command ) ' }
74
- } else {
75
- { $' ( $virtual_prompt )( $old_prompt_command ) ' }
76
- }
77
- } else {
78
- { $' ( $virtual_prompt ) ' }
79
- }
82
+ # 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 ' ) {
87
+ $env .PROMPT_COMMAND
88
+ } else {
89
+ ' '
90
+ }
91
+ }
80
92
81
- # Environment variables that will be loaded as the virtual env
82
- load-env {
83
- $path_name : $new_path
84
- VIRTUAL_ENV : $virtual_env
93
+ # If there is no default prompt, then only the env is printed in the prompt
94
+ let new_prompt = if (has-env ' PROMPT_COMMAND' ) {
95
+ if ($old_prompt_command | describe ) == ' block' {
96
+ { $' ($virtual_prompt )(do $old_prompt_command )' }
97
+ } else {
98
+ { $' ($virtual_prompt )($old_prompt_command )' }
99
+ }
100
+ } else {
101
+ { $' ($virtual_prompt )' }
102
+ }
103
+
104
+ $new_env | merge {
85
105
_OLD_VIRTUAL_PATH : ($old_path | str collect $path_sep )
86
106
_OLD_PROMPT_COMMAND : $old_prompt_command
87
107
PROMPT_COMMAND : $new_prompt
88
108
VIRTUAL_PROMPT : $virtual_prompt
109
+ }
89
110
}
111
+
112
+ # Environment variables that will be loaded as the virtual env
113
+ load-env $new_env
90
114
}
91
115
92
116
export alias pydoc = python - m pydoc
0 commit comments