azure-sdk/eng/common/scripts/Verify-Readme.ps1

105 строки
2.9 KiB
PowerShell

# Wrapper Script for Readme Verification
[CmdletBinding()]
param (
[Parameter(Mandatory = $false)]
[string]$DocWardenVersion,
[string]$RepoRoot,
[string]$ScanPaths,
[Parameter(Mandatory = $true)]
[string]$SettingsPath
)
. (Join-Path $PSScriptRoot common.ps1)
$DefaultDocWardenVersion = "0.7.2"
$script:FoundError = $false
function Test-Readme-Files {
param(
[string]$SettingsPath,
[string]$ScanPath,
[string]$RepoRoot)
Write-Host "Scanning..."
if ($RepoRoot)
{
Write-Host "ward scan -d $ScanPath -u $RepoRoot -c $SettingsPath"
ward scan -d $ScanPath -u $RepoRoot -c $SettingsPath
}
else
{
Write-Host "ward scan -d $ScanPath -c $SettingsPath"
ward scan -d $ScanPath -c $SettingsPath
}
# ward scan is what returns the non-zero exit code on failure.
# Since it's being called from a function, that error needs to
# be propagated back so the script can exit appropriately
if ($LASTEXITCODE -ne 0) {
$script:FoundError = $true
}
}
# Verify all of the inputs before running anything
if ([String]::IsNullOrWhiteSpace($DocWardenVersion)) {
$DocWardenVersion = $DefaultDocWardenVersion
}
# verify the doc settings file exists
if (!(Test-Path -Path $SettingsPath -PathType leaf)) {
LogError "Setting file, $SettingsPath, does not exist"
$script:FoundError = $true
}
$scanPathsArray = @()
# Verify that either ScanPath or ScanPaths were set but not both or neither
if ([String]::IsNullOrWhiteSpace($ScanPaths)) {
LogError "ScanPaths cannot be empty."
} else {
$scanPathsArray = $ScanPaths.Split(',')
foreach ($path in $scanPathsArray) {
if (!(Test-Path -Path $path -PathType Container)) {
LogError "path, $path, doesn't exist or isn't a directory"
$script:FoundError = $true
}
}
}
# Exit out now if there were any argument issues
if ($script:FoundError) {
LogError "There were argument failures, please see above for specifics"
exit 1
}
# Echo back the settings
Write-Host "DocWardenVersion=$DocWardenVersion"
Write-Host "SettingsPath=$SettingsPath"
if ($RepoRoot) {
Write-Host "RepoRoot=$RepoRoot"
}
Write-Host "ScanPath=$ScanPaths"
Write-Host "Installing setup tools and DocWarden"
Write-Host "pip install setuptools wheel --quiet"
pip install setuptools wheel --quiet
if ($LASTEXITCODE -ne 0) {
LogError "pip install setuptools wheel --quiet failed with exit code $LASTEXITCODE"
exit 1
}
Write-Host "pip install doc-warden==$DocWardenVersion --quiet"
pip install doc-warden==$DocWardenVersion --quiet
if ($LASTEXITCODE -ne 0) {
LogError "pip install doc-warden==$DocWardenVersion --quiet failed with exit code $LASTEXITCODE"
exit 1
}
# Finally, do the scanning
foreach ($path in $scanPathsArray) {
Test-Readme-Files $SettingsPath $path $RepoRoot
}
if ($script:FoundError) {
LogError "There were README verification failures, scroll up to see the issue(s)"
exit 1
}