50 lines
1.4 KiB
PowerShell
50 lines
1.4 KiB
PowerShell
function global:deactivate ([switch]$NonDestructive) {
|
|
# Revert to original values
|
|
if (Test-Path function:_OLD_VIRTUAL_PROMPT) {
|
|
copy-item function:_OLD_VIRTUAL_PROMPT function:prompt
|
|
remove-item function:_OLD_VIRTUAL_PROMPT
|
|
}
|
|
|
|
if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) {
|
|
copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME
|
|
remove-item env:_OLD_VIRTUAL_PYTHONHOME
|
|
}
|
|
|
|
if (Test-Path env:_OLD_VIRTUAL_PATH) {
|
|
copy-item env:_OLD_VIRTUAL_PATH env:PATH
|
|
remove-item env:_OLD_VIRTUAL_PATH
|
|
}
|
|
|
|
if (Test-Path env:VIRTUAL_ENV) {
|
|
remove-item env:VIRTUAL_ENV
|
|
}
|
|
|
|
if (!$NonDestructive) {
|
|
# Self destruct!
|
|
remove-item function:deactivate
|
|
}
|
|
}
|
|
|
|
deactivate -nondestructive
|
|
|
|
$env:VIRTUAL_ENV="__VENV_DIR__"
|
|
|
|
# Set the prompt to include the env name
|
|
# Make sure _OLD_VIRTUAL_PROMPT is global
|
|
function global:_OLD_VIRTUAL_PROMPT {""}
|
|
copy-item function:prompt function:_OLD_VIRTUAL_PROMPT
|
|
function global:prompt {
|
|
Write-Host -NoNewline -ForegroundColor Green '__VENV_PROMPT__'
|
|
_OLD_VIRTUAL_PROMPT
|
|
}
|
|
|
|
# Clear PYTHONHOME
|
|
if (Test-Path env:PYTHONHOME) {
|
|
copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME
|
|
remove-item env:PYTHONHOME
|
|
}
|
|
|
|
# Add the venv to the PATH
|
|
copy-item env:PATH env:_OLD_VIRTUAL_PATH
|
|
$env:PATH = "$env:VIRTUAL_ENV\__VENV_BIN_NAME__;$env:PATH"
|