65 строки
1.5 KiB
PowerShell
65 строки
1.5 KiB
PowerShell
<#
|
|
#>
|
|
[CmdletBinding(PositionalBinding=$False)]
|
|
Param(
|
|
[Parameter(Mandatory=$True)]
|
|
[string]$Commit,
|
|
|
|
[Parameter()]
|
|
[string]$GithubRepository = "spdx/license-list-data",
|
|
|
|
[Parameter()]
|
|
[string]$LicensesOutFile = "$PSScriptRoot/src/vcpkg/spdx-licenses.inc",
|
|
|
|
[Parameter()]
|
|
[string]$ExceptionsOutFile = "$PSScriptRoot/src/vcpkg/spdx-exceptions.inc"
|
|
)
|
|
|
|
function Transform-JsonFile {
|
|
[CmdletBinding()]
|
|
Param(
|
|
[string]$Uri,
|
|
[string]$OutFile,
|
|
[string]$OuterName,
|
|
[string]$Id
|
|
)
|
|
|
|
$req = Invoke-WebRequest -Uri $Uri
|
|
|
|
if ($req.StatusCode -ne 200)
|
|
{
|
|
Write-Error "Failed to GET $Uri"
|
|
throw
|
|
}
|
|
|
|
$json = $req.Content | ConvertFrom-Json -Depth 10
|
|
Write-Verbose "Writing output to $OutFile"
|
|
|
|
$fileContent = @(
|
|
"// Data downloaded from $Uri",
|
|
"// Generated by Generate-SpdxLicenseList.ps1")
|
|
$json.$OuterName |
|
|
Sort-Object -Property $Id -Culture '' |
|
|
ForEach-Object {
|
|
$fileContent += "`"$($_.$Id)`","
|
|
}
|
|
|
|
($fileContent -join "`n") + "`n" `
|
|
| Out-File -FilePath $OutFile -Encoding 'utf8' -NoNewline
|
|
}
|
|
|
|
$baseUrl = "https://raw.githubusercontent.com/$GithubRepository/$Commit/json"
|
|
Write-Verbose "Getting json files from $baseUrl"
|
|
|
|
Transform-JsonFile `
|
|
-Uri "$baseUrl/licenses.json" `
|
|
-OutFile $LicensesOutFile `
|
|
-OuterName 'licenses' `
|
|
-Id 'licenseId'
|
|
|
|
Transform-JsonFile `
|
|
-Uri "$baseUrl/exceptions.json" `
|
|
-OutFile $ExceptionsOutFile `
|
|
-OuterName 'exceptions' `
|
|
-Id 'licenseExceptionId'
|