aboutsummaryrefslogtreecommitdiff
path: root/scripts/fetchTool.ps1
diff options
context:
space:
mode:
authorWimok Nupphiboon <wimok.mok@gmail.com>2018-04-13 09:48:50 +0700
committerWimok Nupphiboon <wimok.mok@gmail.com>2018-04-13 09:48:50 +0700
commit00cdc0b10a089c6c3763f8e3c7847efac909e3fd (patch)
treedbe3d517060d68a06e7b0ac58104b0d7ea8547b6 /scripts/fetchTool.ps1
parent30b56c86148babd61eb6c7c2807421bdcd8d3c13 (diff)
parentdc207a2c891fe6deb2710ccde0abf48078f64fcd (diff)
downloadvcpkg-00cdc0b10a089c6c3763f8e3c7847efac909e3fd.tar.gz
vcpkg-00cdc0b10a089c6c3763f8e3c7847efac909e3fd.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'scripts/fetchTool.ps1')
-rw-r--r--scripts/fetchTool.ps155
1 files changed, 43 insertions, 12 deletions
diff --git a/scripts/fetchTool.ps1 b/scripts/fetchTool.ps1
index 26eedac3b..dd3f0f9f4 100644
--- a/scripts/fetchTool.ps1
+++ b/scripts/fetchTool.ps1
@@ -22,43 +22,74 @@ function fetchToolInternal([Parameter(Mandatory=$true)][string]$tool)
if ($toolData -eq $null)
{
- throw "Unkown tool $tool"
+ throw "Unknown tool $tool"
}
- $exePath = "$downloadsDir\$($toolData.exeRelativePath)"
+ $toolPath="$downloadsDir\tools\$tool-$($toolData.version)-windows"
+ $exePath = "$toolPath\$($toolData.exeRelativePath)"
if (Test-Path $exePath)
{
return $exePath
}
- $isArchive = vcpkgHasProperty -object $toolData -propertyName "archiveRelativePath"
+ $isArchive = vcpkgHasProperty -object $toolData -propertyName "archiveName"
if ($isArchive)
{
- $downloadPath = "$downloadsDir\$($toolData.archiveRelativePath)"
+ $downloadPath = "$downloadsDir\$($toolData.archiveName)"
}
else
{
- $downloadPath = "$downloadsDir\$($toolData.exeRelativePath)"
+ $downloadPath = "$toolPath\$($toolData.exeRelativePath)"
}
[String]$url = $toolData.url
if (!(Test-Path $downloadPath))
{
Write-Host "Downloading $tool..."
- vcpkgDownloadFile $url $downloadPath
+
+ # Download aria2 with .NET. aria2 will be used to download everything else.
+ if ($tool -eq "aria2")
+ {
+ vcpkgDownloadFile $url $downloadPath $toolData.sha512
+ }
+ else
+ {
+ $aria2exe = fetchToolInternal "aria2"
+ vcpkgDownloadFileWithAria2 $aria2exe $url $downloadPath $toolData.sha512
+ }
+
Write-Host "Downloading $tool... done."
}
-
- $expectedDownloadedFileHash = $toolData.sha256
- $downloadedFileHash = vcpkgGetSHA256 $downloadPath
- vcpkgCheckEqualFileHash -filePath $downloadPath -expectedHash $expectedDownloadedFileHash -actualHash $downloadedFileHash
+ else
+ {
+ vcpkgCheckEqualFileHash -url $url -filePath $downloadPath -expectedHash $toolData.sha512
+ }
if ($isArchive)
{
- $outFilename = (Get-ChildItem $downloadPath).BaseName
Write-Host "Extracting $tool..."
- vcpkgExtractFile -ArchivePath $downloadPath -DestinationDir $downloadsDir -outFilename $outFilename
+ # Extract 7zip920 with shell because we need it to extract 7zip
+ # Extract aria2 with shell because we need it to download 7zip
+ if ($tool -eq "7zip920" -or $tool -eq "aria2")
+ {
+ vcpkgExtractZipFile -ArchivePath $downloadPath -DestinationDir $toolPath
+ }
+ elseif ($tool -eq "7zip")
+ {
+ $sevenZip920 = fetchToolInternal "7zip920"
+ $ec = vcpkgInvokeCommand "$sevenZip920" "x `"$downloadPath`" -o`"$toolPath`" -y"
+ if ($ec -ne 0)
+ {
+ Write-Host "Could not extract $downloadPath"
+ throw
+ }
+ }
+ else
+ {
+ $sevenZipExe = fetchToolInternal "7zip"
+ vcpkgExtractFileWith7z -sevenZipExe "$sevenZipExe" -ArchivePath $downloadPath -DestinationDir $toolPath
+ }
Write-Host "Extracting $tool... done."
}