Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync eng/common directory with azure-sdk-tools for PR 3510 #18491

Merged
merged 4 commits into from
Jun 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions eng/common/pipelines/templates/steps/verify-readme.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,29 @@
parameters:
ScanPath: $(Build.SourcesDirectory)
RepoRoot: $(Build.SourcesDirectory)
SettingsPath: '$(Build.SourcesDirectory)/eng/.docsettings.yml'
DocWardenVersion : '0.7.2'
- name: ScanPath
type: string
default: ''
# Where ScanPath takes a single path, ScanPaths takes a comma separated list of paths to scan
- name: ScanPaths
type: string
default: ''
- name: RepoRoot
type: string
default: $(Build.SourcesDirectory)
- name: SettingsPath
type: string
default: '$(Build.SourcesDirectory)/eng/.docsettings.yml'
- name: DocWardenVersion
type: string
default: ''

steps:
- task: PowerShell@2
displayName: "Verify Readmes"
inputs:
filePath: "eng/common/scripts/Verify-Readme.ps1"
arguments: >
-DocWardenVersion ${{ parameters.DocWardenVersion }}
-ScanPath ${{ parameters.ScanPath }}
-DocWardenVersion '${{ parameters.DocWardenVersion }}'
-ScanPaths '${{ coalesce(parameters.ScanPath, parameters.ScanPaths) }}'
-RepoRoot ${{ parameters.RepoRoot }}
-SettingsPath ${{ parameters.SettingsPath }}
pwsh: true
101 changes: 91 additions & 10 deletions eng/common/scripts/Verify-Readme.ps1
Original file line number Diff line number Diff line change
@@ -1,24 +1,105 @@
# Wrapper Script for Readme Verification
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[Parameter(Mandatory = $false)]
[string]$DocWardenVersion,
[Parameter(Mandatory = $true)]
[string]$ScanPath,
[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 ($RepoRoot)
{
ward scan -d $ScanPath -u $RepoRoot -c $SettingsPath
if ($LASTEXITCODE -ne 0) {
LogError "pip install doc-warden==$DocWardenVersion --quiet failed with exit code $LASTEXITCODE"
exit 1
}
else
{
ward scan -d $ScanPath -c $SettingsPath

# 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
}