Python Cheetah 2.4.4
- Requires easy_install to be installed, which in turn installs PIP - Will pip install Cheetah, then try to locate python.exe - Looks to PYTHONHOME, and if not falls back to which - Finds existing NameMapper, and copies in _namemapper.pyd - Include compiled pyd versions of _namemapper for 2.4 - 2.7
This commit is contained in:
84
Python.Cheetah/tools/chocolateyInstall.ps1
Normal file
84
Python.Cheetah/tools/chocolateyInstall.ps1
Normal file
@@ -0,0 +1,84 @@
|
||||
$package = 'Python.Cheetah'
|
||||
|
||||
try {
|
||||
# python.exe should be in PATH based on
|
||||
#simulate the unix command for finding things in path
|
||||
#http://stackoverflow.com/questions/63805/equivalent-of-nix-which-command-in-powershell
|
||||
function Which([string]$cmd)
|
||||
{
|
||||
Get-Command -ErrorAction "SilentlyContinue" $cmd |
|
||||
Select -ExpandProperty Definition
|
||||
}
|
||||
|
||||
# Use PYTHONHOME if it exists, or fallback to where
|
||||
$localPython = Join-Path $Env:PYTHONHOME 'python.exe'
|
||||
if (!(Test-Path $localPython))
|
||||
{ $localPython = Which python.exe }
|
||||
|
||||
if (!(Test-Path $localPython))
|
||||
{
|
||||
Write-ChocolateyFailure 'Could not find Python directory'
|
||||
return
|
||||
}
|
||||
|
||||
$pythonRoot = Split-Path $localPython
|
||||
|
||||
easy_install pip
|
||||
|
||||
# HACK: Pip install doesn't block and returns control immediately
|
||||
# so we wait up to 20 seconds for PIP to be installed
|
||||
$pip = Join-Path (Join-Path $pythonRoot 'Scripts') 'pip.exe'
|
||||
0..40 |
|
||||
% {
|
||||
if (!(Test-Path $pip))
|
||||
{
|
||||
Start-Sleep -Milliseconds 500
|
||||
}
|
||||
}
|
||||
|
||||
&$pip install cheetah==2.4.4
|
||||
|
||||
# http://www.cheetahtemplate.org/download.html
|
||||
# Cheetah offers better perf on Windows if the compiled NameMapper is used
|
||||
$nameMapperPath = $pythonRoot |
|
||||
Get-ChildItem -Filter 'NameMapper.py' -Recurse |
|
||||
? { (Split-Path (Split-Path $_.FullName) -Leaf) -ieq 'Cheetah' } |
|
||||
Select -First 1 -ExpandProperty FullName
|
||||
|
||||
if (!(Test-Path $nameMapperPath))
|
||||
{
|
||||
Write-Host 'Could not find Cheetahs NameMapper.py'
|
||||
return
|
||||
}
|
||||
|
||||
$nameMapperRoot = Split-Path $nameMapperPath
|
||||
Write-Host "Installing _namemapper.pyd adjacent to existing NameMapper.py at $nameMapperRoot"
|
||||
|
||||
$pythonVersion = &$localPython --version 2>&1
|
||||
# pick compiled namemapper based on python version
|
||||
switch -Regex ($pythonVersion)
|
||||
{
|
||||
#2.7 compiled by hand with setup.py install build --compiler=mingw32
|
||||
'^.*2\.7(\.\d+){0,1}$' { $url = 'https://github.com/Iristyle/ChocolateyPackages/raw/master/Python.Cheetah/_namemapper-2.7.pyd' }
|
||||
'^.*2\.6(\.\d+){0,1}$' { $url = 'https://github.com/Iristyle/ChocolateyPackages/raw/master/Python.Cheetah/_namemapper-2.6.pyd' }
|
||||
'^.*2\.5(\.\d+){0,1}$' { $url = 'https://github.com/Iristyle/ChocolateyPackages/raw/master/Python.Cheetah/_namemapper-2.5.pyd' }
|
||||
'^.*2\.4(\.\d+){0,1}$' { $url = 'https://github.com/Iristyle/ChocolateyPackages/raw/master/Python.Cheetah/_namemapper-2.4.pyd' }
|
||||
# original sources
|
||||
# '^.*2\.6(\.\d+){0,1}$' { $url = 'http://feisley.com/python/cheetah/pyd2.2.1/py26/_namemapper.pyd' }
|
||||
# '^.*2\.5(\.\d+){0,1}$' { $url = 'http://cheetahtemplate.org/_namemapper.pyd2.5' }
|
||||
# '^.*2\.4(\.\d+){0,1}$' { $url = 'http://cheetahtemplate.org/_namemapper.pyd2.4' }
|
||||
}
|
||||
|
||||
$params = @{
|
||||
packageName = $package;
|
||||
fileFullPath = (Join-Path $nameMapperRoot '_namemapper.pyd');
|
||||
url = $url
|
||||
}
|
||||
|
||||
Get-ChocolateyWebFile @params
|
||||
|
||||
Write-ChocolateySuccess $package
|
||||
} catch {
|
||||
Write-ChocolateyFailure $package "$($_.Exception.Message)"
|
||||
throw
|
||||
}
|
Reference in New Issue
Block a user