Build/Release-AppToFTP.ps1
function Release-AppToFTP{ Param( [Parameter(Mandatory=$true)] [string]$AppName, [Parameter(Mandatory=$true)] [string]$AppDirectory, [Parameter(Mandatory=$true)] [version]$PlatformVersion ) $AppFolder = Get-FolderForPlatformVersion $PlatformVersion CreateAppFolderIfNotExists -FolderName $AppFolder $TestAppFolder = Join-Path $AppFolder 'Tests' $Apps = Get-ChildItem $AppDirectory -Filter '*.app' | Where-Object {$_ -match 'Clever Config'} foreach ($App in $Apps) { if (!$App.Name.Contains('Tests')) { Move-AppToArchive -FolderName $AppFolder -AppName $AppName Write-Host 'Uploading ' $App ' to ' $AppFolder Put-ItemFTPWinSCP -LocalPath $App.FullName -FtpPath $AppFolder } else { Move-AppToArchive -FolderName $TestAppFolder -AppName $AppName Write-Host 'Uploading ' $App ' to ' $TestAppFolder Put-ItemFTPWinSCP -LocalPath $App.FullName -FtpPath $TestAppFolder } } } function CreateAppFolderIfNotExists{ param ( [Parameter(Mandatory=$true)] [string]$FolderName ) if ($FolderName -inotlike 'Business Central *') { throw 'FTP folder name must start with "Business Central "' } if ($null -eq (Get-ChildItemFTPWinSCP './' | Where-Object { $_ -match $FolderName })) { $Script = @("cd ./", ('mkdir "{0}"' -f $FolderName), ('mkdir "{0}/Archive"' -f $FolderName), ('mkdir "{0}/Tests"' -f $FolderName), ('mkdir "{0}/Tests/Archive"' -f $FolderName)) Invoke-FTPWinSCP -Script $Script } } function Move-AppToArchive{ Param( [Parameter(Mandatory=$true)] [string]$FolderName, [Parameter(Mandatory=$true)] [string]$AppName ) $AppFiles = (Get-ChildItemFTPWinSCP $FolderName) -match $AppName if ($AppFiles -ne $false) { foreach($AppFile in $AppFiles){ Write-Host 'Moving '$AppFile' to Archive' Rename-ItemFTPWinSCP -OldPath $FolderName -Name $AppFile -NewPath 'Archive' } } } function Get-FolderForPlatformVersion{ Param( [Parameter(Mandatory=$true)] [version]$PlatformVersion ) 'Business Central ' + $PlatformVersion.Major; } Export-ModuleMember -Function Release-AppToFTP |