mirror of
https://github.com/openziti/ziti.git
synced 2026-09-20 01:25:12 +00:00
b562fb5c07
- splits Open API 2.0 (swagger) into client/management APIs - uses go-swaggers flatten capabilities - uses newer version of go-swagger (v0.27.0) - introduces /edge/client/v1, /edge/management/v1 - non-prefixed URLs default to /edge/client/v1 - splits some shared management/client API handlers - renames some REST models to "client" instead of "limited" - passes all apitests, fails dataflow upd test (main fails this as well) - updates generate rest script for powershell - todo: test generate rest script for bash - todo: use xweb (different branch)
143 lines
5.4 KiB
PowerShell
143 lines
5.4 KiB
PowerShell
$PSDefaultParameterValues += @{ 'New-RegKey:ErrorAction' = 'Stop' }
|
|
|
|
$orignalLocaltion = Get-Location
|
|
try
|
|
{
|
|
|
|
Get-Command swagger -ErrorAction "SilentlyContinue" | Out-Null
|
|
if (-not$?)
|
|
{
|
|
throw "Command 'swagger' not installed. See: https://github.com/go-swagger/go-swagger for installation"
|
|
}
|
|
|
|
$zitiEdgeDir = Join-Path $PSScriptRoot "../" -Resolve
|
|
$zitiSpecSrcDir = Join-Path $PSScriptRoot "../specs/source" -Resolve
|
|
|
|
$copyrightFile = Join-Path $PSScriptRoot "template.copyright.txt" -Resolve
|
|
|
|
"...generating Open API 2.0 specs from source"
|
|
Push-Location $zitiSpecSrcDir
|
|
swagger flatten .\client.yml -o ..\client.yml --format yaml
|
|
if (-not$?)
|
|
{
|
|
Pop-Location
|
|
throw "Failed to flatten client.yml. See above."
|
|
}
|
|
|
|
swagger flatten .\management.yml -o ..\management.yml --format yaml
|
|
if (-not$?)
|
|
{
|
|
Pop-Location
|
|
throw "Failed to flatten management.yml. See above."
|
|
}
|
|
|
|
$clientSpec = Join-Path $zitiEdgeDir "/specs/client.yml" -Resolve
|
|
$managementSpec = Join-Path $zitiEdgeDir "/specs/management.yml" -Resolve
|
|
|
|
|
|
$oldServerPath = Join-Path $zitiEdgeDir "/rest_server"
|
|
$oldClientPath = Join-Path $zitiEdgeDir "/rest_client"
|
|
|
|
"...removing old server path: $oldServerPath"
|
|
Remove-Item $oldServerPath -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
"...removing old client path: $oldClientPath"
|
|
Remove-Item $oldClientPath -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
$clientServerOutDir = Join-Path $zitiEdgeDir "/rest_client_api_server"
|
|
"...removing any existing server from $clientServerOutDir"
|
|
Remove-Item $clientServerOutDir -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
New-Item -ItemType "directory" -Path $clientServerOutDir -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
$clientClientOutDir = Join-Path $zitiEdgeDir "/rest_client_api_client"
|
|
"...removing any existing client from $clientClientOutDir"
|
|
Remove-Item $clientClientOutDir -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
New-Item -ItemType "directory" -Path $clientClientOutDir -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
$managementServerOutDir = Join-Path $zitiEdgeDir "/rest_management_api_server"
|
|
"...removing any existing server from $managementServerOutDir"
|
|
Remove-Item $managementServerOutDir -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
New-Item -ItemType "directory" -Path $managementServerOutDir -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
$managementClientOutDir = Join-Path $zitiEdgeDir "/rest_management_api_client"
|
|
"...removing any existing client from $managementClientOutDir"
|
|
Remove-Item $managementClientOutDir -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
New-Item -ItemType "directory" -Path $managementClientOutDir -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
$modelPath = Join-Path $zitiEdgeDir "/rest_model"
|
|
"...removing any existing model from $modelPath"
|
|
Remove-Item $modelPath -Recurse -Force -ErrorAction "SilentlyContinue" | Out-Null
|
|
New-Item -ItemType "directory" -Path $modelPath -ErrorAction "SilentlyContinue" | Out-Null
|
|
|
|
|
|
"...generating Client API server"
|
|
swagger generate server --exclude-main -f $clientSpec -s rest_client_api_server -t $zitiEdgeDir -q -r $copyrightFile -m "rest_model"
|
|
if (-not$?)
|
|
{
|
|
throw "Failed to generate server. See above."
|
|
}
|
|
|
|
"...generating Client API client"
|
|
swagger generate client -f $clientSpec -c rest_client_api_client -t $zitiEdgeDir -q -r $copyrightFile -m "rest_model"
|
|
if (-not$?)
|
|
{
|
|
throw "Failed to generate client. See above."
|
|
}
|
|
|
|
"...generating Management API server"
|
|
swagger generate server --exclude-main -f $managementSpec -s rest_management_api_server -t $zitiEdgeDir -q -r $copyrightFile -m "rest_model"
|
|
if (-not$?)
|
|
{
|
|
throw "Failed to generate server. See above."
|
|
}
|
|
|
|
"...generating Management API client"
|
|
swagger generate client -f $managementSpec -c rest_management_api_client -t $zitiEdgeDir -q -r $copyrightFile -m "rest_model"
|
|
if (-not$?)
|
|
{
|
|
throw "Failed to generate client. See above."
|
|
}
|
|
|
|
"...fixing up windows slashes"
|
|
# This one file has the command used to generate the server in it w/ paths. The path sep is OS specific.
|
|
# On Windows this causes this one file to show changes depending on the OS that generated it. This
|
|
# works around those changes from showing up in commits by switching to forward slashes.
|
|
#
|
|
# There appears to be no option to suppress this line in the `swagger` executable.
|
|
$configureFile = Join-Path $managementServerOutDir "/configure_ziti_edge_management.go" -Resolve
|
|
|
|
$content = ""
|
|
foreach ($line in Get-Content $configureFile)
|
|
{
|
|
if ($line -match "^//go:generate swagger generate server")
|
|
{
|
|
$line = $line -replace "\\", "/"
|
|
}
|
|
|
|
$content = $content + $line + "`n"
|
|
}
|
|
|
|
$content | Set-Content $configureFile -nonewline
|
|
|
|
$configureFile = Join-Path $clientServerOutDir "/configure_ziti_edge_client.go" -Resolve
|
|
|
|
$content = ""
|
|
foreach ($line in Get-Content $configureFile)
|
|
{
|
|
if ($line -match "^//go:generate swagger generate server")
|
|
{
|
|
$line = $line -replace "\\", "/"
|
|
}
|
|
|
|
$content = $content + $line + "`n"
|
|
}
|
|
|
|
$content | Set-Content $configureFile -nonewline
|
|
|
|
}
|
|
catch
|
|
{
|
|
[Console]::Error.WriteLine($Error[0])
|
|
}
|
|
|
|
Set-Location $orignalLocaltion |