112 lines
3.4 KiB
PowerShell
112 lines
3.4 KiB
PowerShell
#
|
|
|
|
function Build-UmbracoDocs
|
|
{
|
|
$uenv = Get-UmbracoBuildEnv
|
|
|
|
$src = "$($uenv.SolutionRoot)\src"
|
|
$out = "$($uenv.SolutionRoot)\build.out"
|
|
$tmp = "$($uenv.SolutionRoot)\build.tmp"
|
|
|
|
$buildTemp = "$PSScriptRoot\temp"
|
|
$cache = 2
|
|
|
|
Prepare-Build -keep $uenv
|
|
|
|
################ Do the UI docs
|
|
# get a temp clean node env (will restore)
|
|
Sandbox-Node $uenv
|
|
|
|
Write-Host "Executing gulp docs"
|
|
|
|
push-location "$($uenv.SolutionRoot)\src\Umbraco.Web.UI.Client"
|
|
write "node version is:" > $tmp\belle-docs.log
|
|
&node -v >> $tmp\belle-docs.log 2>&1
|
|
write "npm version is:" >> $tmp\belle-docs.log 2>&1
|
|
&npm -v >> $tmp\belle-docs.log 2>&1
|
|
write "executing npm install" >> $tmp\belle-docs.log 2>&1
|
|
&npm install >> $tmp\belle-docs.log 2>&1
|
|
write "executing bower install" >> $tmp\belle-docs.log 2>&1
|
|
&npm install -g bower >> $tmp\belle-docs.log 2>&1
|
|
write "installing gulp" >> $tmp\belle-docs.log 2>&1
|
|
&npm install -g gulp >> $tmp\belle-docs.log 2>&1
|
|
write "installing gulp-cli" >> $tmp\belle-docs.log 2>&1
|
|
&npm install -g gulp-cli --quiet >> $tmp\belle-docs.log 2>&1
|
|
write "building docs using gulp" >> $tmp\belle-docs.log 2>&1
|
|
&gulp docs >> $tmp\belle-docs.log 2>&1
|
|
pop-location
|
|
|
|
Write-Host "Completed gulp docs build"
|
|
|
|
# fixme - should we filter the log to find errors?
|
|
#get-content .\build.tmp\belle-docs.log | %{ if ($_ -match "build") { write $_}}
|
|
|
|
# change baseUrl
|
|
$baseUrl = "https://our.umbraco.com/apidocs/ui/"
|
|
$indexPath = "$src/Umbraco.Web.UI.Client/docs/api/index.html"
|
|
(Get-Content $indexPath).Replace("origin + location.href.substr(origin.length).replace(rUrl, indexFile)", "'$baseUrl'") `
|
|
| Set-Content $indexPath
|
|
|
|
# restore
|
|
Restore-Node
|
|
|
|
# zip
|
|
&$uenv.Zip a -tzip -r "$out\ui-docs.zip" "$src\Umbraco.Web.UI.Client\docs\api\*.*" `
|
|
> $null
|
|
|
|
################ Do the c# docs
|
|
|
|
Write-Host "Build C# documentation"
|
|
|
|
# Build the solution in debug mode
|
|
# FIXME no only a simple compilation should be enough!
|
|
# FIXME we MUST handle msbuild & co error codes!
|
|
# FIXME deal with weird things in gitconfig?
|
|
#Build-Umbraco -Configuration Debug
|
|
Restore-NuGet $uenv
|
|
Compile-Umbraco $uenv "Debug" # FIXME different log file!
|
|
Restore-WebConfig "$src\Umbraco.Web.UI"
|
|
|
|
# ensure we have docfx
|
|
Get-DocFx $uenv $buildTemp
|
|
|
|
# clear
|
|
$docFxOutput = "$($uenv.SolutionRoot)\apidocs\_site"
|
|
if (test-path($docFxOutput))
|
|
{
|
|
Remove-Directory $docFxOutput
|
|
}
|
|
|
|
# run
|
|
$docFxJson = "$($uenv.SolutionRoot)\apidocs\docfx.json"
|
|
push-location "$($uenv.SolutionRoot)\build" # silly docfx.json wants this
|
|
|
|
Write-Host "Run DocFx metadata"
|
|
Write-Host "Logging to $tmp\docfx.metadata.log"
|
|
&$uenv.DocFx metadata $docFxJson > "$tmp\docfx.metadata.log"
|
|
Write-Host "Run DocFx build"
|
|
Write-Host "Logging to $tmp\docfx.build.log"
|
|
&$uenv.DocFx build $docFxJson > "$tmp\docfx.build.log"
|
|
|
|
pop-location
|
|
|
|
# zip
|
|
&$uenv.Zip a -tzip -r "$out\csharp-docs.zip" "$docFxOutput\*.*" `
|
|
> $null
|
|
}
|
|
|
|
function Get-DocFx($uenv, $buildTemp)
|
|
{
|
|
$docFx = "$buildTemp\docfx"
|
|
if (-not (test-path $docFx))
|
|
{
|
|
$source = "https://github.com/dotnet/docfx/releases/download/v2.19.2/docfx.zip"
|
|
Write-Host "Download DocFx from $source"
|
|
|
|
Invoke-WebRequest $source -OutFile "$buildTemp\docfx.zip"
|
|
|
|
&$uenv.Zip x "$buildTemp\docfx.zip" -o"$buildTemp\docfx" -aos > $nul
|
|
Remove-File "$buildTemp\docfx.zip"
|
|
}
|
|
$uenv | add-member -memberType NoteProperty -name DocFx -value "$docFx\docfx.exe"
|
|
} |