powershell/Profile.ps1
author Fabien Ninoles <fninoles@genvidtech.com>
Mon, 23 Jan 2017 07:21:24 -0500
changeset 20 b0af77bc62ec
permissions -rw-r--r--
Add powershell profile.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     1
function Remove-Directory
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     2
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     3
    param(
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     4
        [Parameter(Mandatory=$true)]
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     5
        [string]$Path,
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     6
        [switch]$Force
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     7
    )
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     8
    # [io.directory]::Delete($Path, $Force)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
     9
    if ($Force) {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    10
        cmd /C rd /s /q $Path
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    11
    } else {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    12
        cmd /C rd /s $Path
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    13
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    14
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    15
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    16
function Get-VirtualEnv
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    17
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    18
        dir $env:WORKON_HOME | select Name, FullName
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    19
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    20
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    21
function Activate-VirtualEnv
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    22
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    23
    param([string]$venv)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    24
    if ($venv)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    25
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    26
        . "$env:WORKON_HOME\$venv\Scripts\activate.ps1"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    27
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    28
    else 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    29
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    30
        Get-VirtualEnv
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    31
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    32
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    33
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    34
function Get-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    35
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    36
    dir $env:PROJECT_REPO | select Name, FullName
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    37
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    38
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    39
function Activate-Project 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    40
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    41
    param([string]$project)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    42
    if ($project)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    43
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    44
        if (!$env:SAVED_PATH)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    45
        {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    46
            $env:SAVED_PATH=$env:Path
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    47
        }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    48
        $env:PROJECT_ACTIVE = $project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    49
        $env:Path = "$env:PROJECT_REPO\$project\bin;$env:SAVED_PATH"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    50
        set-alias py python
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    51
        Activate-VirtualEnv $project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    52
        cd $env:PROJECT_REPO\$project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    53
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    54
    else
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    55
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    56
        Get-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    57
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    58
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    59
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    60
function Quit-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    61
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    62
    if ($env:PROJECT_ACTIVE)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    63
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    64
        Write-Verbose "Quitting $env:PROJECT_ACTIVE"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    65
        del Env:\PROJECT_ACTIVE
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    66
        deactivate
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    67
        if ($env:SAVED_PATH) 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    68
        {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    69
            $env:PATH=$env:SAVED_PATH
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    70
        }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    71
        remove-item alias:py
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    72
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    73
    else
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    74
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    75
        Write-Verbose "No project active"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    76
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    77
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    78
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    79
function Create-Project 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    80
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    81
    param(
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    82
        [string]$Project, 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    83
        [string]$Repo = "prototype",
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    84
        [string]$Revision = "default"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    85
        )
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    86
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    87
    if ($Project) 
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    88
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    89
        hg clone -u $Revision ssh://hg@bitbucket.org/genvidtech/$Repo $env:PROJECT_REPO\$Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    90
        setvenv $Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    91
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    92
    else
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    93
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    94
        Get-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    95
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    96
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    97
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    98
function Remove-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
    99
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   100
    param([string]$project)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   101
    if ($project)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   102
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   103
        $path = (Get-Project | Where-Object { $_.Name -eq $project }).FullName
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   104
        $venv = "$env:WORKON_HOME\$project"
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   105
        Remove-Directory -Path $path -Force
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   106
        Remove-Directory -Path $venv -Force
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   107
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   108
    else
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   109
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   110
        Get-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   111
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   112
    
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   113
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   114
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   115
function Activate-Docker
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   116
{
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   117
    param([string]$docker)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   118
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   119
    if (!$docker)
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   120
    {
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   121
        $docker = $env:DOCKER_MACHINE_NAME
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   122
    }
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   123
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   124
    & docker-machine env $docker | Invoke-Expression
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   125
}
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   126
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   127
remove-item alias:curl
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   128
remove-item alias:wget
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   129
remove-item alias:rd
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   130
set-alias workon Activate-Project
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   131
set-alias which Get-Command
b0af77bc62ec Add powershell profile.
Fabien Ninoles <fninoles@genvidtech.com>
parents:
diff changeset
   132
set-alias rd Remove-Directory