Public/Initialize-Virtualenv.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Function Initialize-Virtualenv(){
    <#
    .SYNOPSIS
        To enable Virtualenv on your PowerShell console
    .PARAMETER Name
        Indicates the name of your new Virtualenv
    .PARAMETER Path
        Specifies the absolute path of your new Virtualenv
    .EXAMPLE
        PS> Initialize-Virtualenv -Name 'venv'
        PS> Initialize-Virtualenv -Path 'c:\script\myproject\venv'
    .NOTES
        Version: 1.0.1
        Author: Thomas ILLIET
        Creation Date: 22/07/2018
    #>

    [CmdletBinding(DefaultParameterSetName='ByName')]
    Param(
        [Parameter(Mandatory = $False, ParameterSetName = 'ByName')]
        [string]$Name,

        [Parameter(Mandatory = $False, ParameterSetName = 'ByPath')]
        [string]$Path
    )

    Try {
        # Define Virtualenv Path
        switch ($PsCmdlet.ParameterSetName){
            "ByName" {
                if([string]::IsNullOrEmpty($Name)){
                    $VirtualenvPath  = Join-Path -Path (get-location) -ChildPath 'venv'
                } else {
                    $VirtualenvPath  = Join-Path -Path (get-location) -ChildPath $Name
                }
            }
            "ByPath" {
                $VirtualenvPath  = $Path
            }
        }

        # Create a new Virtualenv
        if((Test-Path $VirtualenvPath) -eq $False){
            New-Item -ItemType directory -Path $VirtualenvPath | Out-Null
        } else {
            Write-Warning "Virtual Environment has already exist !"
        }
    } Catch {
        Write-Error "Unable to create Powershell Virtualenv : $($_.Exception.Message)"
    }
}