Functions/Expand-SourceArchive.ps1
# Copyright (c) 2017, the WebKit for Windows project authors. Please see the # AUTHORS file for details. All rights reserved. Use of this source code is # governed by a BSD-style license that can be found in the LICENSE file. <# .Synopsis Expands a source code archive. .Description Recursively expands a source code archive and moves it to the destination path. Source code releases typically archive a folder. They may also use tar as well as compression. This script handles these cases. .Parameter Path The path to the archive. .Parameter DestinationPath The path to expand to. .Example Expand-SourceArchive -Path foo.tar.gz -DestinationPath C:\foo. #> Function Expand-SourceArchive { Param( [Parameter(Mandatory)] [string] $path, [Parameter(Mandatory)] [string] $destinationPath ) # Expand to a temporary directory $tempDir = Join-Path ([System.IO.Path]::GetTempPath()) ([System.Guid]::NewGuid()); Expand-7Zip -ArchiveFileName $path -TargetPath $tempDir; # Look at the contents of the temporary directory to see if another file # should be expanded. # # This check is for tar.gz type archives. $contents = (Get-ChildItem $tempDir)[0]; $expandedPath = $contents.FullName; if ($contents -is [System.IO.DirectoryInfo]) { Move-Item -Path $expandedPath -Destination $destinationPath; } else { Expand-SourceArchive -Path $expandedPath -DestinationPath $destinationPath; } # Remove temporary directory and its contents Remove-Item $tempDir -Recurse -Force; } |