...

Text file src/github.com/Azure/azure-sdk-for-go/eng/common/scripts/New-ReleaseAsset.ps1

Documentation: github.com/Azure/azure-sdk-for-go/eng/common/scripts

     1<#
     2.SYNOPSIS
     3Uploads the release asset and returns the resulting object from the upload
     4
     5.PARAMETER ReleaseTag
     6Tag to look up release
     7
     8.PARAMETER AssetPath
     9Location of the asset file to upload
    10
    11.PARAMETER GitHubRepo
    12Name of the GitHub repo to search (of the form Azure/azure-sdk-for-cpp)
    13
    14#>
    15
    16param (
    17    [Parameter(Mandatory = $true)]
    18    [ValidateNotNullOrEmpty()]
    19    [string] $ReleaseTag,
    20
    21    [Parameter(Mandatory = $true)]
    22    [ValidateNotNullOrEmpty()]
    23    [string] $AssetPath,
    24
    25    [Parameter(Mandatory = $true)]
    26    [ValidateNotNullOrEmpty()]
    27    [string] $GitHubRepo,
    28
    29    [Parameter(Mandatory = $true)]
    30    [ValidateNotNullOrEmpty()]
    31    [string] $GitHubPat
    32)
    33
    34# Get information about release at $ReleaseTag
    35$releaseInfoUrl = "https://api.github.com/repos/$GitHubRepo/releases/tags/$ReleaseTag"
    36Write-Verbose "Requesting release info from $releaseInfoUrl"
    37$release = Invoke-RestMethod `
    38    -Uri  $releaseInfoUrl `
    39    -Method GET
    40
    41$assetFilename = Split-Path $AssetPath -Leaf
    42
    43# Upload URL comes in the literal form (yes, those curly braces) of:
    44# https://uploads.github.com/repos/Azure/azure-sdk-for-cpp/releases/123/assets{?name,label}
    45# Converts to something like:
    46# https://uploads.github.com/repos/Azure/azure-sdk-for-cpp/releases/123/assets?name=foo.tar.gz
    47# Docs: https://docs.github.com/en/rest/reference/repos#get-a-release-by-tag-name
    48$uploadUrl = $release.upload_url.Split('{')[0] + "?name=$assetFilename"
    49
    50Write-Verbose "Uploading $assetFilename to $uploadUrl"
    51
    52$asset = Invoke-RestMethod `
    53    -Uri $uploadUrl `
    54    -Method POST `
    55    -InFile $AssetPath `
    56    -Credential $credentials `
    57    -Headers @{ Authorization = "token $GitHubPat" } `
    58    -ContentType "application/gzip"
    59
    60Write-Verbose "Upload complete. Browser download URL: $($asset.browser_download_url)"
    61
    62return $asset

View as plain text