67 lines
2.5 KiB
PowerShell
67 lines
2.5 KiB
PowerShell
# PowerShell script to generate TypeScript types from OpenAPI schema
|
|
|
|
# Determine environment (default to dev)
|
|
param(
|
|
[string]$Environment = "dev"
|
|
)
|
|
|
|
if ($Environment -eq "prod" -or $Environment -eq "production") {
|
|
$OPENAPI_URL = "https://api.vitrown.com/api/docs/swagger.json"
|
|
} else {
|
|
$OPENAPI_URL = "https://api.vitrown.abrino.cloud/api/docs/swagger.json"
|
|
}
|
|
|
|
$OUTPUT_DIR = "./src/api/types"
|
|
$GENERATOR_JAR = "openapi-generator-cli.jar"
|
|
|
|
# Check if Java is installed
|
|
try {
|
|
$javaVersion = & java -version 2>&1
|
|
Write-Host "Java is installed."
|
|
} catch {
|
|
Write-Host "Java is not installed or not in your PATH."
|
|
Write-Host "Please install Java from https://adoptium.net/ or https://www.oracle.com/java/technologies/downloads/"
|
|
Write-Host "After installing Java, restart your terminal and try again."
|
|
exit 1
|
|
}
|
|
|
|
# Check if OpenAPI Generator CLI is available
|
|
if (-not (Test-Path $GENERATOR_JAR)) {
|
|
Write-Host "OpenAPI Generator CLI not found. Downloading..."
|
|
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.6.0/openapi-generator-cli-6.6.0.jar" -OutFile $GENERATOR_JAR
|
|
}
|
|
|
|
Write-Host "Generating API types for $Environment environment"
|
|
Write-Host "Using OpenAPI URL: $OPENAPI_URL"
|
|
|
|
# Download OpenAPI schema
|
|
Invoke-WebRequest -Uri $OPENAPI_URL -OutFile "./openapi.json"
|
|
|
|
# Run generator using java directly
|
|
Write-Host "Generating TypeScript types..."
|
|
try {
|
|
& java -jar $GENERATOR_JAR generate `
|
|
-i "./openapi.json" `
|
|
-g typescript-fetch `
|
|
-o $OUTPUT_DIR `
|
|
--skip-validate-spec `
|
|
--additional-properties=supportsES6=true,withoutRuntimeChecks=true,modelPropertyNaming=camelCase
|
|
|
|
# Apply post-generation fix to make BASE_PATH dynamic
|
|
Write-Host "Applying dynamic BASE_PATH fix..."
|
|
$runtimeFile = "src/api/types/runtime.ts"
|
|
if (Test-Path $runtimeFile) {
|
|
$content = Get-Content $runtimeFile -Raw
|
|
$content = $content -replace 'export const BASE_PATH = "https://api\.vitrown\.abrino\.cloud"', "import { getApiBaseUrl } from `"../../../app/utils/api-config`";`nexport const BASE_PATH = getApiBaseUrl()"
|
|
$content = $content -replace 'export const BASE_PATH = "https://api\.vitrown\.com"', "import { getApiBaseUrl } from `"../../../app/utils/api-config`";`nexport const BASE_PATH = getApiBaseUrl()"
|
|
Set-Content $runtimeFile $content
|
|
}
|
|
|
|
# Clean up
|
|
Remove-Item "./openapi.json"
|
|
Write-Host "API types generated successfully with dynamic BASE_PATH"
|
|
} catch {
|
|
Write-Host "Error generating TypeScript types: $_"
|
|
exit 1
|
|
}
|