2019-03-06 09:55:39 -08:00
Param (
[ Parameter ( Mandatory = $true ) ] [ string ] $barToken , # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens
[ Parameter ( Mandatory = $true ) ] [ string ] $gitHubPat , # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed)
[ Parameter ( Mandatory = $true ) ] [ string ] $azdoPat , # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed)
[ Parameter ( Mandatory = $true ) ] [ string ] $outputFolder , # Where the graphviz.txt file will be created
2019-03-26 20:27:29 +00:00
[ string ] $darcVersion = '1.1.0-beta.19175.6' , # darc's version
2019-03-21 12:33:28 +00:00
[ string ] $graphvizVersion = '2.38' , # GraphViz version
2019-03-06 09:55:39 -08:00
[ switch ] $includeToolset # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about
# toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies
)
$ErrorActionPreference = " Stop "
. $PSScriptRoot \ tools . ps1
2019-03-21 12:33:28 +00:00
Import-Module -Name ( Join-Path $PSScriptRoot " native\CommonLibrary.psm1 " )
2019-03-06 09:55:39 -08:00
function CheckExitCode ( [ string ] $stage )
{
$exitCode = $LASTEXITCODE
if ( $exitCode -ne 0 ) {
Write-Host " Something failed in stage: ' $stage '. Check for errors above. Exiting now... "
ExitWithExitCode $exitCode
}
}
try {
Push-Location $PSScriptRoot
2019-06-08 12:08:27 +00:00
2019-03-06 09:55:39 -08:00
Write-Host " Installing darc... "
. . \ darc-init . ps1 -darcVersion $darcVersion
CheckExitCode " Running darc-init "
2019-03-21 12:33:28 +00:00
$engCommonBaseDir = Join-Path $PSScriptRoot " native\ "
$graphvizInstallDir = CommonLibrary \ Get-NativeInstallDirectory
$nativeToolBaseUri = " https://netcorenativeassets.blob.core.windows.net/resource-packages/external "
$installBin = Join-Path $graphvizInstallDir " bin "
Write-Host " Installing dot... "
. \ native \ install-tool . ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose
2019-03-06 09:55:39 -08:00
$darcExe = " $env:USERPROFILE \.dotnet\tools "
$darcExe = Resolve-Path " $darcExe \darc.exe "
2019-06-08 12:08:27 +00:00
2019-03-06 09:55:39 -08:00
Create-Directory $outputFolder
2019-06-08 12:08:27 +00:00
2019-03-21 12:33:28 +00:00
# Generate 3 graph descriptions:
# 1. Flat with coherency information
# 2. Graphviz (dot) file
# 3. Standard dependency graph
2019-03-06 09:55:39 -08:00
$graphVizFilePath = " $outputFolder \graphviz.txt "
2019-03-21 12:33:28 +00:00
$graphVizImageFilePath = " $outputFolder \graph.png "
$normalGraphFilePath = " $outputFolder \graph-full.txt "
$flatGraphFilePath = " $outputFolder \graph-flat.txt "
2019-06-08 12:08:27 +00:00
$baseOptions = @ ( " --github-pat " , " $gitHubPat " , " --azdev-pat " , " $azdoPat " , " --password " , " $barToken " )
2019-03-06 09:55:39 -08:00
if ( $includeToolset ) {
Write-Host " Toolsets will be included in the graph... "
2019-06-08 12:08:27 +00:00
$baseOptions + = @ ( " --include-toolset " )
2019-03-06 09:55:39 -08:00
}
2019-03-21 12:33:28 +00:00
Write-Host " Generating standard dependency graph... "
2019-06-08 12:08:27 +00:00
& " $darcExe " get-dependency -graph @baseOptions - -output -file $normalGraphFilePath
2019-03-21 12:33:28 +00:00
CheckExitCode " Generating normal dependency graph "
Write-Host " Generating flat dependency graph and graphviz file... "
2019-06-08 12:08:27 +00:00
& " $darcExe " get-dependency -graph @baseOptions - -flat - -coherency - -graphviz $graphVizFilePath - -output -file $flatGraphFilePath
2019-03-21 12:33:28 +00:00
CheckExitCode " Generating flat and graphviz dependency graph "
Write-Host " Generating graph image $graphVizFilePath "
$dotFilePath = Join-Path $installBin " graphviz\ $graphvizVersion \release\bin\dot.exe "
2019-06-08 12:08:27 +00:00
& " $dotFilePath " -Tpng -o " $graphVizImageFilePath " " $graphVizFilePath "
2019-03-21 12:33:28 +00:00
CheckExitCode " Generating graphviz image "
2019-06-08 12:08:27 +00:00
2019-03-21 12:33:28 +00:00
Write-Host " ' $graphVizFilePath ', ' $flatGraphFilePath ', ' $normalGraphFilePath ' and ' $graphVizImageFilePath ' created! "
2019-03-06 09:55:39 -08:00
}
catch {
if ( ! $includeToolset ) {
Write-Host " This might be a toolset repo which includes only toolset dependencies. " -NoNewline -ForegroundColor Yellow
Write-Host " Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again... " -ForegroundColor Yellow
}
Write-Host $_
Write-Host $_ . Exception
Write-Host $_ . ScriptStackTrace
ExitWithExitCode 1
2019-03-21 12:33:28 +00:00
} finally {
Pop-Location
2019-03-06 09:55:39 -08:00
}