49 lines
1.4 KiB
PowerShell
49 lines
1.4 KiB
PowerShell
using module ./SoftwareReport.psm1
|
|||
|
|
using module ./SoftwareReport.Comparer.psm1
|
||
|
|
|
||
|
|
<#
|
||
|
|
.SYNOPSIS
|
||
|
|
Calculates the difference between two software reports and saves it to a file.
|
||
|
|
.PARAMETER PreviousJsonReportPath
|
||
|
|
Path to the previous software report.
|
||
|
|
.PARAMETER CurrentJsonReportPath
|
||
|
|
Path to the current software report.
|
||
|
|
.PARAMETER OutputFile
|
||
|
|
Path to the file where the difference will be saved.
|
||
|
|
#>
|
||
|
|
|
||
|
|
Param (
|
||
|
|
[Parameter(Mandatory=$true)]
|
||
|
|
[string] $PreviousJsonReportPath,
|
||
|
|
[Parameter(Mandatory=$true)]
|
||
|
|
[string] $CurrentJsonReportPath,
|
||
|
|
[Parameter(Mandatory=$true)]
|
||
|
|
[string] $OutputFile
|
||
|
|
)
|
||
|
|
|
||
|
|
$ErrorActionPreference = "Stop"
|
||
|
|
$global:ErrorView = "NormalView"
|
||
|
|
|
||
|
|
function Read-SoftwareReport {
|
||
|
|
Param (
|
||
|
|
[Parameter(Mandatory=$true)]
|
||
|
|
[string] $JsonReportPath
|
||
|
|
)
|
||
|
|
|
||
|
|
if (-not (Test-Path $JsonReportPath)) {
|
||
|
|
throw "File '$JsonReportPath' does not exist"
|
||
|
|
}
|
||
|
|
|
||
|
|
$jsonReport = Get-Content -Path $JsonReportPath -Raw
|
||
|
|
$report = [SoftwareReport]::FromJson($jsonReport)
|
||
|
|
return $report
|
||
|
|
}
|
||
|
|
|
||
|
|
$previousReport = Read-SoftwareReport -JsonReportPath $PreviousJsonReportPath
|
||
|
|
$currentReport = Read-SoftwareReport -JsonReportPath $CurrentJsonReportPath
|
||
|
|
|
||
|
|
$comparer = [SoftwareReportComparer]::new($previousReport, $currentReport)
|
||
|
|
$comparer.CompareReports()
|
||
|
|
$diff = $comparer.GetMarkdownReport()
|
||
|
|
$diff | Out-File -Path $OutputFile -Encoding utf8NoBOM
|