Functions/Get-VirtualEnvLocal.ps1
# =========================================================================== # New-VirtualEnvLocal.ps1 ------------------------------------------------- # =========================================================================== # function ---------------------------------------------------------------- # --------------------------------------------------------------------------- function New-VirtualEnvLocal { <# .SYNOPSIS Download packages of a specified virtual environment. .DESCRIPTION Download packages of a specified virtual environment to a predefined local directory. .PARAMETER Name .PARAMETER All .EXAMPLE PS C:\>Get-VirtualEnvLocal -Name venv SUCCESS: Packages of virtual environment 'venv' were downloaded to 'A:\VirtualEnv\.temp\venv'. ----------- Description Download all packages of the virtual environment 'venv' to a predefined download directory. .EXAMPLE PS C:\>Get-VirtualEnvLocal -All ----------- Description Download all packages of each existing virtual environment to a predefined download directory. .INPUTS System.String. Name of the virtual environment. .OUTPUTS None. #> [CmdletBinding(PositionalBinding)] [OutputType([Void])] Param ( [ValidateSet([ValidateVirtualEnv])] [Parameter(Position=1, ValueFromPipeline, HelpMessage="Name of the virtual environment to be changed.")] [System.String] $Name="", [Parameter(HelpMessage="If switch 'All' is true, all existing virtual environments will be changed.")] [Switch] $All ) Process { # check valide virtual environment if ($Name) { if (-not(Test-VirtualEnv -Name $Name)){ Write-FormattedError -Message "The virtual environment '$($Name)' does not exist." -Module $PSVirtualEnv.Name -Space Get-VirtualEnv return } $virtualEnv = @{ Name = $Name } } # get all existing virtual environments if 'Name' is not set if ($All) { $virtualEnv = Get-VirtualEnv } $virtualEnv | ForEach-Object { # get absolute path of requirement file and download directoy $requirementFile = Get-RequirementFile -Name $_.Name $virtualEnvLocal = Get-VirtualEnvLocalDir -Name $_.Name # remove the requirement file when it exists and create the respective file if (Test-Path $requirementFile){ Remove-Item -Path $requirementFile -Force } New-Requirement -Name $_.Name # remove a previous folder, which contains download file of packages related to a older state of the virtual environment if (Test-Path $virtualEnvLocal){ Remove-Item -Path $virtualEnvLocal -Recurse } # download the packages defined in the requirement file to the specified download directory Write-FormattedProcess -Message "[DL] Virtual environment '$($_.Name)' to '$virtualEnvLocal'" -Module $PSVirtualEnv.Name # set environment variable Set-VirtualEnv -Name $_.Name pip download --requirement $requirementFile --dest $virtualEnvLocal Restore-VirtualEnv Write-FormattedSuccess -Message "Packages of virtual environment '$($_.Name)' were downloaded to '$virtualEnvLocal'" -Module $PSVirtualEnv.Name } } } |