| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | export-env { |
| | def is-string [x] { |
| | ($x | describe) == 'string' |
| | } |
| |
|
| | def has-env [...names] { |
| | $names | each {|n| |
| | $n in $env |
| | } | all {|i| $i == true} |
| | } |
| |
|
| | # Emulates a `test -z`, but better as it handles e.g 'false' |
| | 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 }) |
| | if ($parsed | describe) == 'bool' { |
| | $parsed |
| | } else { |
| | not ($env | get -i $name | is-empty) |
| | } |
| | } else { |
| | false |
| | } |
| | } |
| |
|
| | let virtual_env = '/home/susc/.ssh/sichang/openpi/path' |
| | let bin = 'bin' |
| |
|
| | let is_windows = ($nu.os-info.family) == 'windows' |
| | let path_name = (if (has-env 'Path') { |
| | 'Path' |
| | } else { |
| | 'PATH' |
| | } |
| | ) |
| |
|
| | let venv_path = ([$virtual_env $bin] | path join) |
| | let new_path = ($env | get $path_name | prepend $venv_path) |
| |
|
| | # If there is no default prompt, then use the env name instead |
| | let virtual_env_prompt = (if ('' | is-empty) { |
| | ($virtual_env | path basename) |
| | } else { |
| | '' |
| | }) |
| |
|
| | let new_env = { |
| | $path_name : $new_path |
| | VIRTUAL_ENV : $virtual_env |
| | VIRTUAL_ENV_PROMPT : $virtual_env_prompt |
| | } |
| |
|
| | let new_env = (if (is-env-true 'VIRTUAL_ENV_DISABLE_PROMPT') { |
| | $new_env |
| | } else { |
| | # Creating the new prompt for the session |
| | let virtual_prefix = $'(char lparen)($virtual_env_prompt)(char rparen) ' |
| |
|
| | # Back up the old prompt builder |
| | let old_prompt_command = (if (has-env 'PROMPT_COMMAND') { |
| | $env.PROMPT_COMMAND |
| | } else { |
| | '' |
| | }) |
| |
|
| | let new_prompt = (if (has-env 'PROMPT_COMMAND') { |
| | if 'closure' in ($old_prompt_command | describe) { |
| | {|| $'($virtual_prefix)(do $old_prompt_command)' } |
| | } else { |
| | {|| $'($virtual_prefix)($old_prompt_command)' } |
| | } |
| | } else { |
| | {|| $'($virtual_prefix)' } |
| | }) |
| |
|
| | $new_env | merge { |
| | PROMPT_COMMAND : $new_prompt |
| | VIRTUAL_PREFIX : $virtual_prefix |
| | } |
| | }) |
| |
|
| | # Environment variables that will be loaded as the virtual env |
| | load-env $new_env |
| | } |
| |
|
| | export alias pydoc = python -m pydoc |
| | export alias deactivate = overlay hide activate |
| |
|