tasks/Create-CompositeResource.build.ps1
param ( # Project path [Parameter()] [System.String] $ProjectPath = (property ProjectPath $BuildRoot), [Parameter()] # Base directory of all output (default to 'output') [System.String] $OutputDirectory = (property OutputDirectory (Join-Path $BuildRoot 'output')), [Parameter()] [System.String] $BuiltModuleSubdirectory = (property BuiltModuleSubdirectory ''), [Parameter()] [System.Management.Automation.SwitchParameter] $VersionedOutputDirectory = (property VersionedOutputDirectory $true), [Parameter()] [System.String] $ProjectName = (property ProjectName ''), [Parameter()] [System.String] $PesterOutputFolder = (property PesterOutputFolder 'testResults'), [Parameter()] [System.String] $PesterOutputFormat = (property PesterOutputFormat ''), [Parameter()] [System.Object[]] $PesterScript = (property PesterScript ''), [Parameter()] [System.String[]] $PesterTag = (property PesterTag @()), [Parameter()] [System.String[]] $PesterExcludeTag = (property PesterExcludeTag @()), [Parameter()] [System.String] $CodeCoverageThreshold = (property CodeCoverageThreshold ''), # Build Configuration object [Parameter()] [System.Collections.Hashtable] $BuildInfo = (property BuildInfo @{ }) ) # Synopsis: Merging several code coverage files together. task Generate_Composite_Resource_Module { # Get the vales for task variables, see https://github.com/gaelcolas/Sampler#task-variables. . Set-SamplerTaskVariable "`tOutput Path = '$OutputDirectory'" Write-Build White 'Generating Composite Resource Module' $result = New-CompositeResourceModule -OutputPath $OutputDirectory if ($result) { Write-Build Green "Module generation completed." } else { throw "Error occurred during module generation! Please check the log output." } # $osShortName = Get-OperatingSystemShortName # $powerShellVersion = 'PSv.{0}' -f $PSVersionTable.PSVersion # $moduleFileName = '{0}.psm1' -f $ProjectName # $PesterOutputFolder = Get-SamplerAbsolutePath -Path $PesterOutputFolder -RelativeTo $OutputDirectory # "`tPester Output Folder = '$PesterOutputFolder'" # $GetCodeCoverageThresholdParameters = @{ # RuntimeCodeCoverageThreshold = $CodeCoverageThreshold # BuildInfo = $BuildInfo # } # $CodeCoverageThreshold = Get-CodeCoverageThreshold @GetCodeCoverageThresholdParameters # if (-not $CodeCoverageThreshold) # { # $CodeCoverageThreshold = 0 # } # "`tCode Coverage Threshold = '$CodeCoverageThreshold'" # if ($CodeCoverageThreshold -gt 0) # { # $getPesterOutputFileFileNameParameters = @{ # ProjectName = $ProjectName # ModuleVersion = $ModuleVersion # OsShortName = $osShortName # PowerShellVersion = $powerShellVersion # } # $pesterOutputFileFileName = Get-PesterOutputFileFileName @getPesterOutputFileFileNameParameters # $getCodeCoverageOutputFile = @{ # BuildInfo = $BuildInfo # PesterOutputFolder = $PesterOutputFolder # } # $CodeCoverageOutputFile = Get-SamplerCodeCoverageOutputFile @getCodeCoverageOutputFile # if (-not $CodeCoverageOutputFile) # { # $CodeCoverageOutputFile = (Join-Path -Path $PesterOutputFolder -ChildPath "CodeCov_$pesterOutputFileFileName") # } # "`tCode Coverage Output File = $CodeCoverageOutputFile" # $CodeCoverageMergedOutputFile = 'CodeCov_Merged.xml' # if ($BuildInfo.CodeCoverage.CodeCoverageMergedOutputFile) # { # $CodeCoverageMergedOutputFile = $BuildInfo.CodeCoverage.CodeCoverageMergedOutputFile # } # $CodeCoverageMergedOutputFile = Get-SamplerAbsolutePath -Path $CodeCoverageMergedOutputFile -RelativeTo $PesterOutputFolder # "`tCode Coverage Merge Output File = $CodeCoverageMergedOutputFile" # $CodeCoverageFilePattern = 'Codecov*.xml' # if ($BuildInfo.ContainsKey('CodeCoverage') -and $BuildInfo.CodeCoverage.ContainsKey('CodeCoverageFilePattern')) # { # $CodeCoverageFilePattern = $BuildInfo.CodeCoverage.CodeCoverageFilePattern # } # "`tCode Coverage File Pattern = $CodeCoverageFilePattern" # if (-not [System.String]::IsNullOrEmpty($CodeCoverageFilePattern)) # { # $codecovFiles = Get-ChildItem -Path $PesterOutputFolder -Include $CodeCoverageFilePattern -Recurse # } # "`tMerging Code Coverage Files = '{0}'" -f ($codecovFiles.FullName -join ', ') # "" # if (Test-Path -Path $CodeCoverageMergedOutputFile) # { # Write-Build Yellow "File $CodeCoverageMergedOutputFile found, deleting file." # Remove-Item -Path $CodeCoverageMergedOutputFile -Force # } # Write-Build White "Processing folder: $OutputDirectory" # if ($codecovFiles.Count -gt 1) # { # Write-Build DarkGray "Started merging $($codecovFiles.Count) code coverage files!" # Start-CodeCoverageMerge -Files $codecovFiles -TargetFile $CodeCoverageMergedOutputFile # Write-Build Green "Merge completed. Saved merge result to: $CodeCoverageMergedOutputFile" # } # else # { # throw "Found $($codecovFiles.Count) code coverage file. Need at least two files to merge." # } # } # else # { # Write-Build White 'Code coverage is not enabled, skipping.' # } } |