mirror of
https://github.com/containers/podman.git
synced 2025-10-18 03:33:32 +08:00
Add new targets on Windows makefile (winmake.ps1)
Add the following targets in winmake.ps1: - `installer`: builds the Windows installer - `docs`: builds the documentation HTML pages - `validatepr`: runs the Linux Makefile `.valiatepr` target using podman. - `lint`: faster validation that runs linter locally Update of `build_windows.md`: - removed every reference to the MSYS2 platform - added instructions to build the installer and linters Fix https://github.com/containers/podman/issues/21821 and https://github.com/containers/podman/issues/21911 Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
This commit is contained in:
147
docs/make.ps1
Normal file
147
docs/make.ps1
Normal file
@ -0,0 +1,147 @@
|
||||
function Get-Podman-Commands-List{
|
||||
param (
|
||||
[string]$podmanClient,
|
||||
[string]$command
|
||||
);
|
||||
if(!$podmanClient) {
|
||||
$podmanClient="$PSScriptRoot\..\bin\windows\podman.exe"
|
||||
}
|
||||
if($command) {
|
||||
$podmanHelpCommand="help $command"
|
||||
Write-Host "Retrieving the list of ""podman $command"" subcommands."
|
||||
} else {
|
||||
$podmanHelpCommand="help"
|
||||
Write-Host "Retrieving the list of ""podman"" commands."
|
||||
}
|
||||
|
||||
# Retrieve the list of subcommands of $command
|
||||
# e.g. "podman help machine" returns the list of
|
||||
# "podman machine" subcommands: info, init, etc...
|
||||
$subCommands = @()
|
||||
$subCommands = Invoke-Expression "$podmanClient $podmanHelpCommand" |
|
||||
Select-String -Pattern "^\s*Available Commands:" -Context 0, 1000 | Out-String -Stream |
|
||||
Select-String -Pattern "^\s+$" -Context 1000, 0 | Out-String -Stream |
|
||||
Select-String -Pattern ">\s*Available Commands:|^>\s*$|^\s*$" -NotMatch | Out-String -Stream |
|
||||
ForEach-Object { $_ -replace '^\s*(\w+)\s+.*$', '$1' } | Where-Object { $_ -ne "" }
|
||||
|
||||
if ($command) {
|
||||
$subCommands = $subCommands | ForEach-Object { "$command $_" }
|
||||
}
|
||||
|
||||
# Recursively get the list of sub-subcommands for each subcommand
|
||||
foreach ($subCommand in $subCommands) {
|
||||
|
||||
$subSubCommands = @()
|
||||
$subSubCommands = Get-Podman-Commands-List -podmanClient "$podmanClient" -command "${subCommand}"
|
||||
|
||||
if ($subSubCommands) {
|
||||
$subCommands += $subSubCommands
|
||||
}
|
||||
}
|
||||
|
||||
return $subCommands
|
||||
}
|
||||
|
||||
function Build-Podman-For-Windows-HTML-Page{
|
||||
$srcFolder = "$PSScriptRoot\tutorials"
|
||||
$srcFile = "$srcFolder\podman-for-windows.md"
|
||||
$destFolder = "$PSScriptRoot\build\remote"
|
||||
$destFile = "$destFolder\podman-for-windows.html"
|
||||
$cssFile = "$PSScriptRoot\standalone-styling.css"
|
||||
$pandocOptions = "--ascii --from markdown-smart -c $cssFile --standalone " +
|
||||
"--embed-resources --metadata title=""Podman for Windows"" " +
|
||||
"-V title="
|
||||
|
||||
Write-Host -NoNewline "Generating $destFile from $srcFile..."
|
||||
Push-Location $srcFolder
|
||||
New-Item -ItemType Directory -Force -Path $destFolder | Out-Null
|
||||
Invoke-Expression "pandoc $pandocOptions $srcFile > $destFile"
|
||||
Pop-Location
|
||||
Write-Host "done."
|
||||
}
|
||||
|
||||
function Build-Podman-Remote-HTML-Page{
|
||||
$markdownFolder = "$PSScriptRoot\source\markdown"
|
||||
# Look for all podman-remote*.md files in the markdown folder
|
||||
Get-ChildItem -Path "$markdownFolder" -Filter "podman-remote*.md" | ForEach-Object {
|
||||
# Extract the command name from the file name
|
||||
$command = $_.Name -replace '^podman-(.*).1.md$','$1'
|
||||
# Generate the documentation HTML page
|
||||
Build-Podman-Command-HTML-Page -command $command
|
||||
}
|
||||
}
|
||||
|
||||
function Find-Podman-Command-Markdown-File{
|
||||
param (
|
||||
[string]$command
|
||||
);
|
||||
# A podman command documentation can be in one of the following files
|
||||
$markdownFolder = "$PSScriptRoot\source\markdown"
|
||||
$srcFileMdIn = "$markdownFolder\podman-$command.1.md.in"
|
||||
$srcFileMd = "$markdownFolder\podman-$command.1.md"
|
||||
$linkFile = "$markdownFolder\links\podman-$command.1"
|
||||
|
||||
if (Test-Path -Path $srcFileMdIn -PathType Leaf) {
|
||||
return $srcFileMdIn
|
||||
} elseif (Test-Path -Path $srcFileMd -PathType Leaf) {
|
||||
return $srcFileMd
|
||||
} elseif (Test-Path -Path $linkFile -PathType Leaf) {
|
||||
# In $linkFile there is a link to a markdown file
|
||||
$srcFile = Get-Content -Path $linkFile
|
||||
# $srcFile is something like ".so man1/podman-attach.1"
|
||||
# and the markdown file is "podman-attach.1.md"
|
||||
$srcFile = $srcFile -replace ".so man1/", ""
|
||||
$srcFileMdIn = "$markdownFolder\$srcFile.md.in"
|
||||
$srcFileMd = "$markdownFolder\$srcFile.md"
|
||||
if (Test-Path -Path "$srcFileMdIn" -PathType Leaf) {
|
||||
return "$srcFileMdIn"
|
||||
} elseif (Test-Path -Path $srcFileMd -PathType Leaf) {
|
||||
return "$srcFileMd"
|
||||
}
|
||||
}
|
||||
return $null
|
||||
}
|
||||
|
||||
function Build-Podman-Command-HTML-Page{
|
||||
param (
|
||||
[string]$command
|
||||
);
|
||||
|
||||
$destFile = "$PSScriptRoot\build\remote\podman-$command.html"
|
||||
$srcFile = Find-Podman-Command-Markdown-File -command $command
|
||||
|
||||
if (!$srcFile) {
|
||||
Write-Host "Couldn't find the documentation source file for $command. Skipping."
|
||||
continue
|
||||
}
|
||||
|
||||
$pandocOptions = "--ascii --standalone --from markdown-smart " +
|
||||
"--lua-filter=$PSScriptRoot\links-to-html.lua " +
|
||||
"--lua-filter=$PSScriptRoot\use-pagetitle.lua"
|
||||
|
||||
Write-Host -NoNewline "Generating $command documentation..."
|
||||
Invoke-Expression "pandoc $pandocOptions -o $destFile $srcFile" | Out-Null
|
||||
Write-Host "done."
|
||||
}
|
||||
|
||||
# Generate podman-for-windows.html
|
||||
Build-Podman-For-Windows-HTML-Page
|
||||
|
||||
# Generate podman-remote*.html
|
||||
Build-Podman-Remote-HTML-Page
|
||||
|
||||
# Get the list of podman commands on Windows
|
||||
if ($args[1]) {
|
||||
$commands = Get-Podman-Commands-List "-podmanClient $args[1]"
|
||||
}
|
||||
else {
|
||||
$commands = Get-Podman-Commands-List
|
||||
}
|
||||
|
||||
# Generate podman commands documentation
|
||||
foreach ($command in $commands) {
|
||||
# Replace spaces with hyphens in the command name
|
||||
# e.g. machine os apply becomes machine-os-apply
|
||||
$command = $command -replace ' ', '-'
|
||||
Build-Podman-Command-HTML-Page -command $command
|
||||
}
|
Reference in New Issue
Block a user