From f54173e46d8f88042726f82572e2724e804a2bc5 Mon Sep 17 00:00:00 2001 From: Tom Peltonen Date: Wed, 18 Jun 2025 21:29:56 +1000 Subject: [PATCH] Adding default content Fine tuning existing content --- rediops/default/default.json | 2 +- .../definitions/default/build/README.md | 4 + .../default/build/qaskx_generate.ps1 | 90 +++++++++++++++---- .../definitions/default/build/server.cfg.yaml | 5 ++ .../definitions/default/build/types.cfg.yaml | 4 + 5 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 rediops/default/definitions/default/build/README.md create mode 100644 rediops/default/definitions/default/build/server.cfg.yaml create mode 100644 rediops/default/definitions/default/build/types.cfg.yaml diff --git a/rediops/default/default.json b/rediops/default/default.json index 9cab3da..7db69c8 100644 --- a/rediops/default/default.json +++ b/rediops/default/default.json @@ -20,7 +20,7 @@ { "engine": "", "folder": "{{.SelfFolder}}/definitions/{{.TemplateName}}/build", - "file_name": "*", + "file_name": "", "output_folder": "^/build", "output_name": "" } diff --git a/rediops/default/definitions/default/build/README.md b/rediops/default/definitions/default/build/README.md new file mode 100644 index 0000000..eddead0 --- /dev/null +++ b/rediops/default/definitions/default/build/README.md @@ -0,0 +1,4 @@ +# Build Directory + +The build directory contains documentation and +scripts for building/testing/deploying the asset. diff --git a/rediops/default/definitions/default/build/qaskx_generate.ps1 b/rediops/default/definitions/default/build/qaskx_generate.ps1 index 14bb98c..a141a08 100644 --- a/rediops/default/definitions/default/build/qaskx_generate.ps1 +++ b/rediops/default/definitions/default/build/qaskx_generate.ps1 @@ -1,5 +1,5 @@ param ( - [Parameter(Mandatory=$true)][string] $OpenAPI + [string] $OpenAPI = "*rediops" ) $startCd = Get-Location @@ -14,19 +14,20 @@ Write-Host "Project home dir: $prjDir" Set-Location $prjDir # Fetch oapigen if it does not exist -$binFolder = Join-Path -Path $prjDir -Child "build" -$oapigenItem = Join-Path -Path $binFolder -Child "oapigen.exe" -if ( (Test-Path $oapigenItem -PathType Leaf) -eq $false) { - $binTmpFolder = "tmp" - $oapigenItem = Join-Path -Path $binTmpFolder -Child "oapigen.exe" - if ( (Test-Path $oapigenItem -PathType Leaf) -eq $false) { - # TODO: Download artefact - } +$oapigenItem = "oapi-codegen" +$version = cmd.exe /c $oapigenItem -version +if ($lastexitcode -ne 0 -or $version -eq "") { - if ( (Test-Path $oapigenItem -PathType Leaf) -eq $false) { - throw "oapigen.exe not found nor downloaded" + Write-Host "Fetching oapi-codegen software" -ForegroundColor Cyan + go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest + $version = cmd.exe /c $oapigenItem -version + if ($lastexitcode -ne 0 -or $version -eq "") { + Set-Location $startCd + Throw "$oapigenItem not found nor downloaded" } -} +} +Write-Host "Using software '$version'" -ForegroundColor Cyan + $genFolder = Join-Path -Path $prjDir -ChildPath "internal/controller/http/api/gen" @@ -35,13 +36,66 @@ if ( (Test-Path $genFolder -PathType Container) -eq $false) { New-Item -Path $genFolder -Name "gen" -ItemType Directory -Force } -$configFile = Join-Path -Path $prjDir -ChildPath ".\build\types.cfg.yaml" -& $oapigenItem --config $configFile $OpenAPI -Write-Host "API type code generated" -$configFile = Join-Path -Path $prjDir -ChildPath ".\build\server.cfg.yaml" -& $oapigenItem --config $configFile $OpenAPI -Write-Host "API server code generated" +# Fetch first OpenAPI from definition +if ($OpenAPI -eq "*rediops") { + $list = qaskx-cli rediops get --section API --silent + + $processed = $false + foreach ($api in $list) { + $parts = $api -split "`t" + + if ($parts[3] -ne "" -and $parts[1] -eq "OpenAPI") { + Write-Host "Generate from OpenAPI definition '$($parts[3])'" -ForegroundColor Yellow + $OpenAPI = $parts[3] + $configFile = Join-Path -Path $prjDir -ChildPath ".\build\types.cfg.yaml" + & $oapigenItem --config $configFile $OpenAPI + if ($lastexitcode -ne 0) { + Write-Host "`nAPI Types generation error" -ForegroundColor Red + Set-Location $startCd + Throw "API Types generation error detected" + } + Write-Host "API type code generated" + + $configFile = Join-Path -Path $prjDir -ChildPath ".\build\server.cfg.yaml" + & $oapigenItem --config $configFile $OpenAPI + if ($lastexitcode -ne 0) { + Write-Host "`nAPI Server generation error" -ForegroundColor Red + Set-Location $startCd + Throw "API Server generation error detected" + } + Write-Host "API server code generated" + + $processed = $true + break + } + } + + if ($processed -eq $false) { + Write-Host "`nNo OpenAPI definitions detected in rediOps" -ForegroundColor Red + Set-Location $startCd + Throw "No OpenAPI definitions detected in rediOps" + } +} else { + + $configFile = Join-Path -Path $prjDir -ChildPath ".\build\types.cfg.yaml" + & $oapigenItem --config $configFile $OpenAPI + if ($lastexitcode -ne 0) { + Write-Host "`nAPI Types generation error" -ForegroundColor Red + Set-Location $startCd + Throw "API Types generation error detected" + } + Write-Host "API type code generated" + + $configFile = Join-Path -Path $prjDir -ChildPath ".\build\server.cfg.yaml" + & $oapigenItem --config $configFile $OpenAPI + if ($lastexitcode -ne 0) { + Write-Host "`nAPI Server generation error" -ForegroundColor Red + Set-Location $startCd + Throw "API Server generation error detected" + } + Write-Host "API server code generated" +} Set-Location $startCd Write-Host "Generation complete. Please check logs." -ForegroundColor Yellow diff --git a/rediops/default/definitions/default/build/server.cfg.yaml b/rediops/default/definitions/default/build/server.cfg.yaml new file mode 100644 index 0000000..e851f17 --- /dev/null +++ b/rediops/default/definitions/default/build/server.cfg.yaml @@ -0,0 +1,5 @@ +package: gen +generate: + echo-server: true + embedded-spec: true +output: internal/controller/http/api/gen/general-server.gen.go diff --git a/rediops/default/definitions/default/build/types.cfg.yaml b/rediops/default/definitions/default/build/types.cfg.yaml new file mode 100644 index 0000000..e403992 --- /dev/null +++ b/rediops/default/definitions/default/build/types.cfg.yaml @@ -0,0 +1,4 @@ +package: gen +generate: + models: true +output: internal/controller/http/api/gen/general-type.gen.go