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