cmder/scripts/build.ps1

91 lines
2.5 KiB
PowerShell
Raw Normal View History

2014-02-25 00:33:14 +08:00
<#
.Synopsis
Build Cmder
.DESCRIPTION
Use this script to build your own edition of Cmder
2014-02-25 00:33:14 +08:00
This script builds dependencies from current vendor/sources.json file and unpacks them.
2014-02-25 00:33:14 +08:00
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
Then unblock the script for execution with UnblockFile .\build.ps1
.EXAMPLE
.\build.ps1
2014-02-25 00:33:14 +08:00
Executes the default build for cmder; Conemu, clink. This is equivalent to the "minimum" style package in the releases
.EXAMPLE
.\build.ps1 -Full
Executes a full build for cmder, including git. This is equivalent to the "full" style package in the releases
.EXAMPLE
.\build -verbose
2014-02-25 00:33:14 +08:00
Execute the build and see what's going on.
.EXAMPLE
.\build.ps1 -SourcesPath '~/custom/vendors.json'
2014-02-25 00:33:14 +08:00
Build cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
.NOTES
AUTHORS
Samuel Vasko, Jack Bennett
Part of the Cmder project.
.LINK
https://github.com/bliker/cmder - Project Home
#>
[CmdletBinding(SupportsShouldProcess=$true)]
Param(
# CmdletBinding will give us;
# -verbose switch to turn on logging and
# -whatif switch to not actually make changes
# Path to the vendor configuration source file
2014-04-10 18:41:19 +08:00
[string]$sourcesPath = "..\vendor\sources.json",
2014-08-27 06:52:49 +08:00
# Vendor folder location
[string]$saveTo = "..\vendor\",
# Launcher folder location
[string]$launcher = "..\launcher",
# Include git with the package build
[switch]$Full
)
2014-02-25 00:33:14 +08:00
2014-04-10 18:41:19 +08:00
. "$PSScriptRoot\utils.ps1"
$ErrorActionPreference = "Stop"
2014-04-10 18:41:19 +08:00
Push-Location -Path $saveTo
$sources = Get-Content $sourcesPath | Out-String | Convertfrom-Json
# Check for requirements
Ensure-Exists $sourcesPath
Ensure-Executable "7z"
New-Item -Type Directory -Path (Join-Path $saveTo "/tmp/") -ErrorAction SilentlyContinue >$null
foreach ($s in $sources) {
if($Full -eq $false -and $s.name -eq "msysgit"){
Continue
}
2014-04-28 19:21:03 +08:00
Write-Verbose "Getting $($s.name) from URL $($s.url)"
# We do not care about the extensions/type of archive
$tempArchive = "tmp/$($s.name).tmp"
Delete-Existing $tempArchive
Delete-Existing $s.name
Invoke-WebRequest -Uri $s.url -OutFile $tempArchive -ErrorAction Stop
2014-03-05 21:31:01 +08:00
Extract-Archive $tempArchive $s.name
if ((Get-Childitem $s.name).Count -eq 1) {
Flatten-Directory($s.name)
2014-02-25 00:33:14 +08:00
}
}
Pop-Location
2014-08-27 06:52:49 +08:00
Push-Location -Path $launcher
msbuild CmderLauncher.vcxproj /p:configuration=Release
Pop-Location
Write-Verbose "All good and done!"