74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PowerShell
		
	
	
		
			Executable File
		
	
	
	
	
[CmdletBinding()]
 | 
						|
param(
 | 
						|
    [Parameter(Mandatory=$true)][string]$SourcesRef,
 | 
						|
    [Parameter(Mandatory=$false)][string]$PortDirectory = $PSScriptRoot,
 | 
						|
    [Parameter(Mandatory=$false)][string]$vcpkg = "$PSScriptRoot/../../vcpkg"
 | 
						|
)
 | 
						|
 | 
						|
$ErrorActionPreference = "Stop"
 | 
						|
 | 
						|
$ManifestIn = "$PortDirectory/vcpkg.in.json"
 | 
						|
$ManifestOut = "$PortDirectory/vcpkg.json"
 | 
						|
$CMakeFragmentFile = "$PortDirectory/compute_build_only.cmake"
 | 
						|
 | 
						|
$ExtractedSources = "${env:TEMP}/aws-sdk-cpp-generateFeatures-$SourcesRef"
 | 
						|
if (-not (Test-Path $ExtractedSources)) {
 | 
						|
    if (Test-Path "$ExtractedSources.tmp") {
 | 
						|
        Remove-Item -Force "$ExtractedSources.tmp"
 | 
						|
    }
 | 
						|
    git clone "https://github.com/aws/aws-sdk-cpp" "$ExtractedSources.tmp" | Out-Host
 | 
						|
    git -c "$ExtractedSources.tmp" checkout $SourcesRef
 | 
						|
    Move-Item "$ExtractedSources.tmp" "$ExtractedSources"
 | 
						|
}
 | 
						|
Write-Host "Using sources directory: $ExtractedSources"
 | 
						|
 | 
						|
 | 
						|
$subfolders = Get-Item $ExtractedSources\aws-cpp-sdk-*
 | 
						|
 | 
						|
$manifest = Get-Content $ManifestIn | ConvertFrom-Json
 | 
						|
$manifest | Add-Member `
 | 
						|
    -NotePropertyName '$note' `
 | 
						|
    -NotePropertyValue 'Automatically generated by generateFeatures.ps1'
 | 
						|
$manifest | Add-Member -NotePropertyName 'features' -NotePropertyValue @{}
 | 
						|
 | 
						|
$cmakefragmenttext = @("# Automatically generated by generateFeatures.ps1")
 | 
						|
 | 
						|
function GetDescription($dir, $modulename)
 | 
						|
{
 | 
						|
    if (Test-Path "$dir\CMakeLists.txt")
 | 
						|
    {
 | 
						|
        $descs = @(Select-String -Path "$dir\CMakeLists.txt" -Pattern "`"C\+\+ SDK for the AWS [^`"]*`"")
 | 
						|
        if ($descs.count -eq 1) {
 | 
						|
            $desc = $descs[0].Matches.Value -replace "`"",""
 | 
						|
            "$desc"
 | 
						|
        }
 | 
						|
        else { "C++ SDK for the AWS $modulename service" }
 | 
						|
    }
 | 
						|
    else { "C++ SDK for the AWS $modulename service" }
 | 
						|
}
 | 
						|
 | 
						|
foreach ($subfolder in $subfolders)
 | 
						|
{
 | 
						|
    $modulename = $subfolder.name -replace "^aws-cpp-sdk-",""
 | 
						|
    if ($modulename -match "-tests`$") { continue }
 | 
						|
    if ($modulename -match "-sample`$") { continue }
 | 
						|
    if ($modulename -eq "core") { continue }
 | 
						|
 | 
						|
    $lowermodulename = $modulename.ToLower()
 | 
						|
 | 
						|
    $manifest.features.Add("$lowermodulename", @{ description=(GetDescription $subfolder $modulename) })
 | 
						|
 | 
						|
    $cmakefragmenttext += @(
 | 
						|
        "if(`"$lowermodulename`" IN_LIST FEATURES)",
 | 
						|
        "  list(APPEND BUILD_ONLY $modulename)",
 | 
						|
        "endif()"
 | 
						|
    )
 | 
						|
}
 | 
						|
 | 
						|
[IO.File]::WriteAllText($ManifestOut, (ConvertTo-Json -Depth 5 -InputObject $manifest))
 | 
						|
 | 
						|
Write-Verbose ($cmakefragmenttext -join "`n")
 | 
						|
[IO.File]::WriteAllText($CMakeFragmentFile, ($cmakefragmenttext -join "`n") +"`n")
 | 
						|
 | 
						|
& $vcpkg format-manifest --feature-flags=-manifests $ManifestOut
 |