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.

function Remove-Directory
{
    param(
        [Parameter(Mandatory=$true)]
        [string]$Path,
        [switch]$Force
    )
    # [io.directory]::Delete($Path, $Force)
    if ($Force) {
        cmd /C rd /s /q $Path
    } else {
        cmd /C rd /s $Path
    }
}

function Get-VirtualEnv
{
        dir $env:WORKON_HOME | select Name, FullName
}

function Activate-VirtualEnv
{
    param([string]$venv)
    if ($venv)
    {
        . "$env:WORKON_HOME\$venv\Scripts\activate.ps1"
    }
    else 
    {
        Get-VirtualEnv
    }
}

function Get-Project
{
    dir $env:PROJECT_REPO | select Name, FullName
}

function Activate-Project 
{
    param([string]$project)
    if ($project)
    {
        if (!$env:SAVED_PATH)
        {
            $env:SAVED_PATH=$env:Path
        }
        $env:PROJECT_ACTIVE = $project
        $env:Path = "$env:PROJECT_REPO\$project\bin;$env:SAVED_PATH"
        set-alias py python
        Activate-VirtualEnv $project
        cd $env:PROJECT_REPO\$project
    }
    else
    {
        Get-Project
    }
}

function Quit-Project
{
    if ($env:PROJECT_ACTIVE)
    {
        Write-Verbose "Quitting $env:PROJECT_ACTIVE"
        del Env:\PROJECT_ACTIVE
        deactivate
        if ($env:SAVED_PATH) 
        {
            $env:PATH=$env:SAVED_PATH
        }
        remove-item alias:py
    }
    else
    {
        Write-Verbose "No project active"
    }
}

function Create-Project 
{
    param(
        [string]$Project, 
        [string]$Repo = "prototype",
        [string]$Revision = "default"
        )

    if ($Project) 
    {
        hg clone -u $Revision ssh://hg@bitbucket.org/genvidtech/$Repo $env:PROJECT_REPO\$Project
        setvenv $Project
    }
    else
    {
        Get-Project
    }
}

function Remove-Project
{
    param([string]$project)
    if ($project)
    {
        $path = (Get-Project | Where-Object { $_.Name -eq $project }).FullName
        $venv = "$env:WORKON_HOME\$project"
        Remove-Directory -Path $path -Force
        Remove-Directory -Path $venv -Force
    }
    else
    {
        Get-Project
    }
    
}

function Activate-Docker
{
    param([string]$docker)

    if (!$docker)
    {
        $docker = $env:DOCKER_MACHINE_NAME
    }

    & docker-machine env $docker | Invoke-Expression
}

remove-item alias:curl
remove-item alias:wget
remove-item alias:rd
set-alias workon Activate-Project
set-alias which Get-Command
set-alias rd Remove-Directory