dotNetUpackPush.ps1

param(
    [Parameter(Mandatory = $false)]
    [String] $Feed = "tools"
)

$ErrorActionPreference = "Stop"

$ModuleRoot = Resolve-Path "$PSScriptRoot\..\.."
Import-Module "$ModuleRoot\..\Common\Common.psm1" -DisableNameChecking
Import-HspPsUpack

$ArtifactRoot = $env:PIPELINE_WORKSPACE
if (-not $ArtifactRoot) {
    Write-Warning "The variable 'PIPELINE_WORKSPACE' is not defined. Exiting ..."
    return
}
$ArtifactRoot = [IO.Path]::Combine($ArtifactRoot, 'output')
if (-not [IO.Directory]::Exists($ArtifactRoot)) {
    Write-Warning "The directory '$ArtifactRoot' does not exist. Exiting ..."
    return
}

$BuildVersion = Get-InputVariable "BUILD_VERSION" -Require
$BuildVersion = [Version]::Parse($BuildVersion)
$BuildVersion = "$($BuildVersion.Major).$($BuildVersion.Minor).$($BuildVersion.Build)"
Write-Host "Using '$BuildVersion' as build version."

$ProGet_BaseUrl = Get-InputVariable "PROGET_BASEURL" -Require
$ProGet_ApiKey = Get-InputVariable "PROGET_API_KEY" -Require

$ManifestPaths = Get-ChildItem $ArtifactRoot -Filter "upack.json" -Recurse | Select-Object -ExpandProperty FullName
if (-not $ManifestPaths) {
    Write-Host "No UPack Manifests found in '$ArtifactRoot', exiting ..."
    return
}

foreach ($ManifestPath in $ManifestPaths) {

    $PackageFolder = [IO.Path]::GetDirectoryName($ManifestPath)
    Write-Host "Creating UPack package from folder '$PackageFolder'"
    Write-Host "Using Proget Feed: '$Feed'"
    Write-Host "$ProGet_BaseUrl/upack/$Feed"
    $Manifest = Get-Content -Path $ManifestPath -Raw | ConvertFrom-Json
    Remove-Item $ManifestPath
    Hsp.Ps.Upack\Publish-UPackPackage `
        -FolderPath $PackageFolder `
        -Name $Manifest.Name `
        -Title $Manifest.Title `
        -IconUrl $Manifest.IconUrl `
        -Version $BuildVersion `
        -FeedUri "$ProGet_BaseUrl/upack/$Feed" `
        -ApiKey "$ProGet_ApiKey"

}