cmder/scripts/build.ps1

113 lines
3.2 KiB
PowerShell
Raw Permalink Normal View History

2014-02-24 17:33:14 +01:00
<#
.Synopsis
Build Cmder
.DESCRIPTION
Use this script to build your own edition of Cmder
2014-02-24 17:33:14 +01:00
This script builds dependencies from current vendor/sources.json file and unpacks them.
2014-02-24 17:33:14 +01: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-24 17:33:14 +01:00
2015-08-23 20:21:45 +02:00
Executes the default build for Cmder; Conemu, clink. This is equivalent to the "minimum" style package in the releases
.EXAMPLE
.\build.ps1 -Full
2015-08-23 20:21:45 +02:00
Executes a full build for Cmder, including git. This is equivalent to the "full" style package in the releases
.EXAMPLE
.\build -verbose
2014-02-24 17:33:14 +01:00
Execute the build and see what's going on.
.EXAMPLE
.\build.ps1 -SourcesPath '~/custom/vendors.json'
2014-02-24 17:33:14 +01: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 12:41:19 +02:00
[string]$sourcesPath = "..\vendor\sources.json",
2014-08-26 23:52:49 +01:00
# Vendor folder location
[string]$saveTo = "..\vendor\",
# Launcher folder location
[string]$launcher = "..\launcher",
# Config folder location
[string]$config = "..\config",
# Include git with the package build
[switch]$Full
)
2014-02-24 17:33:14 +01:00
2014-04-10 12:41:19 +02:00
. "$PSScriptRoot\utils.ps1"
$ErrorActionPreference = "Stop"
2014-04-10 12:41:19 +02: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
# Preserve modified (by user) ConEmu setting file
if ($config -ne "") {
$ConEmuXml = Join-Path $saveTo "conemu-maximus5\ConEmu.xml"
if (Test-Path $ConEmuXml -pathType leaf) {
$ConEmuXmlSave = Join-Path $config "ConEmu.xml"
Write-Verbose "Backup '$ConEmuXml' to '$ConEmuXmlSave'"
Copy-Item $ConEmuXml $ConEmuXmlSave
} else { $ConEmuXml = "" }
} else { $ConEmuXml = "" }
foreach ($s in $sources) {
2015-08-23 20:21:45 +02:00
if($Full -eq $false -and $s.name -eq "git-for-windows"){
Continue
}
2014-04-28 13:21:03 +02: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 14:31:01 +01:00
Extract-Archive $tempArchive $s.name
if ((Get-Childitem $s.name).Count -eq 1) {
Flatten-Directory($s.name)
2014-02-24 17:33:14 +01:00
}
# Write current version to .cmderver file, for later.
2015-05-17 22:13:04 +01:00
"$($s.version)" | Out-File "$($s.name)/.cmderver"
}
# Restore user configuration
if ($ConEmuXml -ne "") {
Write-Verbose "Restore '$ConEmuXmlSave' to '$ConEmuXml'"
Copy-Item $ConEmuXmlSave $ConEmuXml
}
Pop-Location
2014-08-26 23:52:49 +01:00
Push-Location -Path $launcher
msbuild CmderLauncher.vcxproj /p:configuration=Release
Pop-Location
Write-Verbose "All good and done!"