Skip to content

Commit

Permalink
Update Nushell 'let' syntax (#2527)
Browse files Browse the repository at this point in the history
  • Loading branch information
sophiajt committed Mar 21, 2023
1 parent a91a75b commit 7ff4eb1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
2 changes: 2 additions & 0 deletions docs/changelog/2527.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Move the use of 'let' in nushell to ensure compatibility with future releases of nushell, where 'let' no longer
assumes that its initializer is a full expressions.
22 changes: 11 additions & 11 deletions src/virtualenv/activation/nushell/activate.nu
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export-env {
def is-env-true [name: string] {
if (has-env $name) {
# Try to parse 'true', '0', '1', and fail if not convertible
let parsed = do -i { $env | get $name | into bool }
let parsed = (do -i { $env | get $name | into bool })
if ($parsed | describe) == 'bool' {
$parsed
} else {
Expand All @@ -34,15 +34,15 @@ export-env {
let virtual_env = '__VIRTUAL_ENV__'
let bin = '__BIN_NAME__'
let path_sep = (char esep)
let path_name = if $is_windows {
let path_name = (if $is_windows {
if (has-env 'Path') {
'Path'
} else {
'PATH'
}
} else {
'PATH'
}
})

let old_path = (
if $is_windows {
Expand All @@ -69,45 +69,45 @@ export-env {
VIRTUAL_ENV : $virtual_env
}

let new_env = if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') {
let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') {
$new_env
} else {
# Creating the new prompt for the session
let virtual_prompt = if ('__VIRTUAL_PROMPT__' == '') {
let virtual_prompt = (if ('__VIRTUAL_PROMPT__' == '') {
$'(char lparen)($virtual_env | path basename)(char rparen) '
} else {
'(__VIRTUAL_PROMPT__) '
}
})

# Back up the old prompt builder
let old_prompt_command = if (has-env 'VIRTUAL_ENV') and (has-env '_OLD_PROMPT_COMMAND') {
let old_prompt_command = (if (has-env 'VIRTUAL_ENV') and (has-env '_OLD_PROMPT_COMMAND') {
$env._OLD_PROMPT_COMMAND
} else {
if (has-env 'PROMPT_COMMAND') {
$env.PROMPT_COMMAND
} else {
''
}
}
})

# If there is no default prompt, then only the env is printed in the prompt
let new_prompt = if (has-env 'PROMPT_COMMAND') {
let new_prompt = (if (has-env 'PROMPT_COMMAND') {
if 'closure' in ($old_prompt_command | describe) {
{|| $'($virtual_prompt)(do $old_prompt_command)' }
} else {
{|| $'($virtual_prompt)($old_prompt_command)' }
}
} else {
{|| $'($virtual_prompt)' }
}
})

$new_env | merge {
_OLD_VIRTUAL_PATH : ($old_path | str collect $path_sep)
_OLD_PROMPT_COMMAND : $old_prompt_command
PROMPT_COMMAND : $new_prompt
VIRTUAL_PROMPT : $virtual_prompt
}
}
})

# Environment variables that will be loaded as the virtual env
load-env $new_env
Expand Down

0 comments on commit 7ff4eb1

Please sign in to comment.