Save/Save-NuGetPackage.ps1

<#
.SYNOPSIS
Function to save and push application packages to a NuGet feed.
 
.DESCRIPTION
The `Save-NuGetPackage` function scans a specified directory for application files (.app), packages them into NuGet packages, and pushes them to a specified NuGet feed.
 
.PARAMETER nugetFeed
Specifies the URL of the NuGet feed where the packages will be pushed. For example, `https://pkgs.dev.azure.com/smart365/5697519e-e648-48c1-a3b4-0f623d3f2fa3/_packaging/Ukrainian-language/nuget/v3/index.json`.
 
.PARAMETER appBasePath
Specifies the path to the directory containing the application files (.app) to be packaged and pushed. For example, `$(Pipeline.Workspace)\output`.
 
.EXAMPLE
$nugetFeed = "https://pkgs.dev.azure.com/smart365/5697519e-e648-48c1-a3b4-0f623d3f2fa3/_packaging/Ukrainian-language/nuget/v3/index.json"
$appBasePath = "$(Pipeline.Workspace)\output"
Save-NuGetPackage -nugetFeed $nugetFeed -appBasePath $appBasePath
 
.NOTES
This function is designed to work with Azure Artifacts and NuGet feeds.
#>


function Save-NuGetPackage {
    param (
        [string] $nugetFeed,
        [string] $appBasePath,
        [string] $appNames
    )

    if (('','*') -contains $appNames) {
        $appFiles = Get-ChildItem -Path $appBasePath -Filter *.app
    } else {
        $appNamesArray = $appNames -split ','
        $appFiles = @()
        foreach ($appName in $appNamesArray) {
            $appPath = Get-ChildItem -Path $basePath -Filter "*$appName*.app" -Recurse
            if ($appPath) {
                $appFiles += $appPath.FullName
            }
        }
    }

    $tempFolder = $appBasePath
    Set-Location -Path $tempFolder

    foreach ($appFile in $appNames) {
        $fileName = [System.IO.Path]::GetFileName($appFile)
        
        Write-Host "##[group]Push $fileName on Azure Artifacts"
        Write-Output "Push $appFile on Azure Artifacts"
        $nupkgFile = New-BcNuGetPackage -appfile $appFile
        Push-BcNuGetPackage -nuGetServerUrl $nugetFeed -nuGetToken "$env:SystemAccessToken" -bcNuGetPackage $nupkgFile
        Write-Host "##[endgroup]"
    }
}