AppSource/Publish-AppToAppsource.ps1


function Publish-AppToAppsource {
    Param(
        [Parameter(Mandatory=$true)]
        $authContext,
        [Parameter(Mandatory=$true)]
        [string] $appSourceProductName,
        [Parameter(Mandatory=$true)]
        $appFile,
        [Parameter(Mandatory=$false)]
        $libraryAppFiles,
        [Parameter(Mandatory=$false)]
        [bool] $autoPromote = $false
    )

    Write-Host "##[section] Publish $appSourceProductName"
    Write-Host " - App: " $appFile
    Write-Host " - Libraries: " $libraryAppFiles
    Write-Host " - Auto promote: " $autoPromote

    $appsourceProduct = Get-AppSourceProduct -authContext $authcontext -productName $appSourceProductName -silent

    New-AppSourceSubmission -authContext $authContext -productId $appsourceProduct.id -appFile $appFile -libraryAppFiles $libraryAppFiles -silent -autoPromote:$autoPromote

    $results = Get-AppSourceSubmission -authContext $authContext -productId $appsourceProduct.id
    if ($results.substate -eq 'Failed') {
        throw "Submission failed for $($appsourceProduct.Name)"
    }
} 

Write-Verbose "Function imported: Publish-AppToAppsource"

<#
$publishParams = @{
    authContext = $authContext
    appSourceProductName = 'SMART Core Localization for Ukraine'
    appFile = 'SMART Core Localization for Ukraine' | findAppByNameInFolder($appBasePath)
    libraryAppFiles = 'SMART Core,SMART Helpers' | splitToArray | findAppByNameInFolder($appBasePath)
    autoPromote = $false
}
 
$libArchiveName = 'SMART Core Libraries'
$libZip = Join-Path $appBasePath "$libArchiveName.zip"
$publishParams.libraryAppFiles | Compress-Archive -DestinationPath $libFileName -Force
$publishParams.libraryAppFiles = $libZip
 
Publish-AppToAppsource @publishParams
#>