Vitron-Front/generate-types.ps1
2026-04-29 01:44:16 +03:30

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
}