105 строки
2.9 KiB
PowerShell
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
|
|
} |