forked from loafle/openapi-generator-original
[PowerShell] better enum model support (#12082)
* better enum model/class support in powershell client generator * add new files
This commit is contained in:
parent
f852c9c695
commit
6591d4e6fb
@ -1125,7 +1125,8 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return objs;
|
// process enum in models
|
||||||
|
return postProcessModelsEnum(objs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1545,4 +1546,30 @@ public class PowerShellClientCodegen extends DefaultCodegen implements CodegenCo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.POWERSHELL; }
|
public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.POWERSHELL; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toEnumVarName(String name, String datatype) {
|
||||||
|
if (name.length() == 0) {
|
||||||
|
return "EMPTY";
|
||||||
|
}
|
||||||
|
|
||||||
|
// for symbol, e.g. $, #
|
||||||
|
if (getSymbolName(name) != null) {
|
||||||
|
return (getSymbolName(name)).toUpperCase(Locale.ROOT);
|
||||||
|
}
|
||||||
|
|
||||||
|
// number
|
||||||
|
if ("Int16".equals(datatype) || "Int32".equals(datatype) || "Int64".equals(datatype) ||
|
||||||
|
"UInt16".equals(datatype) || "UInt32".equals(datatype) || "UInt64".equals(datatype) ||
|
||||||
|
"Double".equals(datatype) || "Single".equals(datatype) || "Decimal".equals(datatype)) {
|
||||||
|
String varName = name;
|
||||||
|
varName = varName.replaceAll("-", "MINUS_");
|
||||||
|
varName = varName.replaceAll("\\+", "PLUS_");
|
||||||
|
varName = varName.replaceAll("\\.", "_DOT_");
|
||||||
|
return varName;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove special character
|
||||||
|
return sanitizeName(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
{{> partial_header}}
|
{{> partial_header}}
|
||||||
{{#models}}
|
{{#models}}
|
||||||
{{#model}}
|
{{#model}}
|
||||||
|
{{#isEnum}}
|
||||||
|
{{>model_enum}}
|
||||||
|
{{/isEnum}}
|
||||||
|
{{^isEnum}}
|
||||||
{{#oneOf}}{{#-first}}{{>model_oneof}}{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}{{>model_anyof}}{{/-first}}{{/anyOf}}{{^anyOf}}{{>model_simple}}{{/anyOf}}{{/oneOf}}
|
{{#oneOf}}{{#-first}}{{>model_oneof}}{{/-first}}{{/oneOf}}{{^oneOf}}{{#anyOf}}{{#-first}}{{>model_anyof}}{{/-first}}{{/anyOf}}{{^anyOf}}{{>model_simple}}{{/anyOf}}{{/oneOf}}
|
||||||
|
{{/isEnum}}
|
||||||
{{/model}}
|
{{/model}}
|
||||||
{{/models}}
|
{{/models}}
|
||||||
|
18
modules/openapi-generator/src/main/resources/powershell/model_enum.mustache
vendored
Normal file
18
modules/openapi-generator/src/main/resources/powershell/model_enum.mustache
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
|
||||||
|
{{{summary}}}{{^summary}}Enum {{{classname}}}.{{/summary}}
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
|
||||||
|
{{{description}}}{{^description}}No description available.{{/description}}
|
||||||
|
#>
|
||||||
|
|
||||||
|
enum {{{classname}}} {
|
||||||
|
{{#allowableValues}}
|
||||||
|
{{#enumVars}}
|
||||||
|
# enum value: {{{value}}}
|
||||||
|
{{{name}}}
|
||||||
|
{{/enumVars}}
|
||||||
|
{{/allowableValues}}
|
||||||
|
}
|
@ -1525,42 +1525,42 @@ components:
|
|||||||
# - _abc
|
# - _abc
|
||||||
# - '-efg'
|
# - '-efg'
|
||||||
# - (xyz)
|
# - (xyz)
|
||||||
#Enum_Test:
|
Enum_Test:
|
||||||
# type: object
|
type: object
|
||||||
# required:
|
required:
|
||||||
# - enum_string_required
|
- enum_string_required
|
||||||
# properties:
|
properties:
|
||||||
# enum_string:
|
enum_string:
|
||||||
# type: string
|
type: string
|
||||||
# enum:
|
enum:
|
||||||
# - UPPER
|
- UPPER
|
||||||
# - lower
|
- lower
|
||||||
# - ''
|
- ''
|
||||||
# enum_string_required:
|
enum_string_required:
|
||||||
# type: string
|
type: string
|
||||||
# enum:
|
enum:
|
||||||
# - UPPER
|
- UPPER
|
||||||
# - lower
|
- lower
|
||||||
# - ''
|
- ''
|
||||||
# enum_integer:
|
enum_integer:
|
||||||
# type: integer
|
type: integer
|
||||||
# format: int32
|
format: int32
|
||||||
# enum:
|
enum:
|
||||||
# - 1
|
- 1
|
||||||
# - -1
|
- -1
|
||||||
# enum_integer_only:
|
enum_integer_only:
|
||||||
# type: integer
|
type: integer
|
||||||
# enum:
|
enum:
|
||||||
# - 2
|
- 2
|
||||||
# - -2
|
- -2
|
||||||
# enum_number:
|
enum_number:
|
||||||
# type: number
|
type: number
|
||||||
# format: double
|
format: double
|
||||||
# enum:
|
enum:
|
||||||
# - 1.1
|
- 1.1
|
||||||
# - -1.2
|
- -1.2
|
||||||
# outerEnum:
|
outerEnum:
|
||||||
# $ref: '#/components/schemas/OuterEnum'
|
$ref: '#/components/schemas/OuterEnum'
|
||||||
# outerEnumInteger:
|
# outerEnumInteger:
|
||||||
# $ref: '#/components/schemas/OuterEnumInteger'
|
# $ref: '#/components/schemas/OuterEnumInteger'
|
||||||
# outerEnumDefaultValue:
|
# outerEnumDefaultValue:
|
||||||
@ -1733,13 +1733,13 @@ components:
|
|||||||
enum:
|
enum:
|
||||||
- fish
|
- fish
|
||||||
- crab
|
- crab
|
||||||
#OuterEnum:
|
OuterEnum:
|
||||||
# nullable: true
|
nullable: true
|
||||||
# type: string
|
type: string
|
||||||
# enum:
|
enum:
|
||||||
# - placed
|
- placed
|
||||||
# - approved
|
- approved
|
||||||
# - delivered
|
- delivered
|
||||||
#OuterEnumInteger:
|
#OuterEnumInteger:
|
||||||
# type: integer
|
# type: integer
|
||||||
# enum:
|
# enum:
|
||||||
|
@ -26,6 +26,7 @@ docs/Dog.md
|
|||||||
docs/DogAllOf.md
|
docs/DogAllOf.md
|
||||||
docs/Drawing.md
|
docs/Drawing.md
|
||||||
docs/EnumArrays.md
|
docs/EnumArrays.md
|
||||||
|
docs/EnumTest.md
|
||||||
docs/EquilateralTriangle.md
|
docs/EquilateralTriangle.md
|
||||||
docs/File.md
|
docs/File.md
|
||||||
docs/FileSchemaTestClass.md
|
docs/FileSchemaTestClass.md
|
||||||
@ -50,6 +51,7 @@ docs/NumberOnly.md
|
|||||||
docs/ObjectWithDeprecatedFields.md
|
docs/ObjectWithDeprecatedFields.md
|
||||||
docs/Order.md
|
docs/Order.md
|
||||||
docs/OuterComposite.md
|
docs/OuterComposite.md
|
||||||
|
docs/OuterEnum.md
|
||||||
docs/PSAnotherFakeApi.md
|
docs/PSAnotherFakeApi.md
|
||||||
docs/PSDefaultApi.md
|
docs/PSDefaultApi.md
|
||||||
docs/PSFakeApi.md
|
docs/PSFakeApi.md
|
||||||
@ -109,6 +111,7 @@ src/PSPetstore/Model/Dog.ps1
|
|||||||
src/PSPetstore/Model/DogAllOf.ps1
|
src/PSPetstore/Model/DogAllOf.ps1
|
||||||
src/PSPetstore/Model/Drawing.ps1
|
src/PSPetstore/Model/Drawing.ps1
|
||||||
src/PSPetstore/Model/EnumArrays.ps1
|
src/PSPetstore/Model/EnumArrays.ps1
|
||||||
|
src/PSPetstore/Model/EnumTest.ps1
|
||||||
src/PSPetstore/Model/EquilateralTriangle.ps1
|
src/PSPetstore/Model/EquilateralTriangle.ps1
|
||||||
src/PSPetstore/Model/File.ps1
|
src/PSPetstore/Model/File.ps1
|
||||||
src/PSPetstore/Model/FileSchemaTestClass.ps1
|
src/PSPetstore/Model/FileSchemaTestClass.ps1
|
||||||
@ -135,6 +138,7 @@ src/PSPetstore/Model/NumberOnly.ps1
|
|||||||
src/PSPetstore/Model/ObjectWithDeprecatedFields.ps1
|
src/PSPetstore/Model/ObjectWithDeprecatedFields.ps1
|
||||||
src/PSPetstore/Model/Order.ps1
|
src/PSPetstore/Model/Order.ps1
|
||||||
src/PSPetstore/Model/OuterComposite.ps1
|
src/PSPetstore/Model/OuterComposite.ps1
|
||||||
|
src/PSPetstore/Model/OuterEnum.ps1
|
||||||
src/PSPetstore/Model/ParentPet.ps1
|
src/PSPetstore/Model/ParentPet.ps1
|
||||||
src/PSPetstore/Model/Pet.ps1
|
src/PSPetstore/Model/Pet.ps1
|
||||||
src/PSPetstore/Model/PetWithRequiredTags.ps1
|
src/PSPetstore/Model/PetWithRequiredTags.ps1
|
||||||
|
@ -122,6 +122,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [PSPetstore/Model.DogAllOf](docs/DogAllOf.md)
|
- [PSPetstore/Model.DogAllOf](docs/DogAllOf.md)
|
||||||
- [PSPetstore/Model.Drawing](docs/Drawing.md)
|
- [PSPetstore/Model.Drawing](docs/Drawing.md)
|
||||||
- [PSPetstore/Model.EnumArrays](docs/EnumArrays.md)
|
- [PSPetstore/Model.EnumArrays](docs/EnumArrays.md)
|
||||||
|
- [PSPetstore/Model.EnumTest](docs/EnumTest.md)
|
||||||
- [PSPetstore/Model.EquilateralTriangle](docs/EquilateralTriangle.md)
|
- [PSPetstore/Model.EquilateralTriangle](docs/EquilateralTriangle.md)
|
||||||
- [PSPetstore/Model.File](docs/File.md)
|
- [PSPetstore/Model.File](docs/File.md)
|
||||||
- [PSPetstore/Model.FileSchemaTestClass](docs/FileSchemaTestClass.md)
|
- [PSPetstore/Model.FileSchemaTestClass](docs/FileSchemaTestClass.md)
|
||||||
@ -148,6 +149,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [PSPetstore/Model.ObjectWithDeprecatedFields](docs/ObjectWithDeprecatedFields.md)
|
- [PSPetstore/Model.ObjectWithDeprecatedFields](docs/ObjectWithDeprecatedFields.md)
|
||||||
- [PSPetstore/Model.Order](docs/Order.md)
|
- [PSPetstore/Model.Order](docs/Order.md)
|
||||||
- [PSPetstore/Model.OuterComposite](docs/OuterComposite.md)
|
- [PSPetstore/Model.OuterComposite](docs/OuterComposite.md)
|
||||||
|
- [PSPetstore/Model.OuterEnum](docs/OuterEnum.md)
|
||||||
- [PSPetstore/Model.ParentPet](docs/ParentPet.md)
|
- [PSPetstore/Model.ParentPet](docs/ParentPet.md)
|
||||||
- [PSPetstore/Model.Pet](docs/Pet.md)
|
- [PSPetstore/Model.Pet](docs/Pet.md)
|
||||||
- [PSPetstore/Model.PetWithRequiredTags](docs/PetWithRequiredTags.md)
|
- [PSPetstore/Model.PetWithRequiredTags](docs/PetWithRequiredTags.md)
|
||||||
|
@ -9,9 +9,6 @@ Name | Type | Description | Notes
|
|||||||
**EnumIntegerOnly** | **Int32** | | [optional]
|
**EnumIntegerOnly** | **Int32** | | [optional]
|
||||||
**EnumNumber** | **Double** | | [optional]
|
**EnumNumber** | **Double** | | [optional]
|
||||||
**OuterEnum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
**OuterEnum** | [**OuterEnum**](OuterEnum.md) | | [optional]
|
||||||
**OuterEnumInteger** | [**OuterEnumInteger**](OuterEnumInteger.md) | | [optional]
|
|
||||||
**OuterEnumDefaultValue** | [**OuterEnumDefaultValue**](OuterEnumDefaultValue.md) | | [optional]
|
|
||||||
**OuterEnumIntegerDefaultValue** | [**OuterEnumIntegerDefaultValue**](OuterEnumIntegerDefaultValue.md) | | [optional]
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
@ -22,10 +19,7 @@ $EnumTest = Initialize-PSPetstoreEnumTest -EnumString null `
|
|||||||
-EnumInteger null `
|
-EnumInteger null `
|
||||||
-EnumIntegerOnly null `
|
-EnumIntegerOnly null `
|
||||||
-EnumNumber null `
|
-EnumNumber null `
|
||||||
-OuterEnum null `
|
-OuterEnum null
|
||||||
-OuterEnumInteger null `
|
|
||||||
-OuterEnumDefaultValue null `
|
|
||||||
-OuterEnumIntegerDefaultValue null
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- Convert the resource to JSON
|
- Convert the resource to JSON
|
||||||
|
@ -26,12 +26,6 @@ No description available.
|
|||||||
No description available.
|
No description available.
|
||||||
.PARAMETER OuterEnum
|
.PARAMETER OuterEnum
|
||||||
No description available.
|
No description available.
|
||||||
.PARAMETER OuterEnumInteger
|
|
||||||
No description available.
|
|
||||||
.PARAMETER OuterEnumDefaultValue
|
|
||||||
No description available.
|
|
||||||
.PARAMETER OuterEnumIntegerDefaultValue
|
|
||||||
No description available.
|
|
||||||
.OUTPUTS
|
.OUTPUTS
|
||||||
|
|
||||||
EnumTest<PSCustomObject>
|
EnumTest<PSCustomObject>
|
||||||
@ -62,16 +56,7 @@ function Initialize-PSEnumTest {
|
|||||||
${EnumNumber},
|
${EnumNumber},
|
||||||
[Parameter(Position = 5, ValueFromPipelineByPropertyName = $true)]
|
[Parameter(Position = 5, ValueFromPipelineByPropertyName = $true)]
|
||||||
[PSCustomObject]
|
[PSCustomObject]
|
||||||
${OuterEnum},
|
${OuterEnum}
|
||||||
[Parameter(Position = 6, ValueFromPipelineByPropertyName = $true)]
|
|
||||||
[PSCustomObject]
|
|
||||||
${OuterEnumInteger},
|
|
||||||
[Parameter(Position = 7, ValueFromPipelineByPropertyName = $true)]
|
|
||||||
[PSCustomObject]
|
|
||||||
${OuterEnumDefaultValue},
|
|
||||||
[Parameter(Position = 8, ValueFromPipelineByPropertyName = $true)]
|
|
||||||
[PSCustomObject]
|
|
||||||
${OuterEnumIntegerDefaultValue}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
@ -90,9 +75,6 @@ function Initialize-PSEnumTest {
|
|||||||
"enum_integer_only" = ${EnumIntegerOnly}
|
"enum_integer_only" = ${EnumIntegerOnly}
|
||||||
"enum_number" = ${EnumNumber}
|
"enum_number" = ${EnumNumber}
|
||||||
"outerEnum" = ${OuterEnum}
|
"outerEnum" = ${OuterEnum}
|
||||||
"outerEnumInteger" = ${OuterEnumInteger}
|
|
||||||
"outerEnumDefaultValue" = ${OuterEnumDefaultValue}
|
|
||||||
"outerEnumIntegerDefaultValue" = ${OuterEnumIntegerDefaultValue}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -130,7 +112,7 @@ function ConvertFrom-PSJsonToEnumTest {
|
|||||||
$JsonParameters = ConvertFrom-Json -InputObject $Json
|
$JsonParameters = ConvertFrom-Json -InputObject $Json
|
||||||
|
|
||||||
# check if Json contains properties not defined in PSEnumTest
|
# check if Json contains properties not defined in PSEnumTest
|
||||||
$AllProperties = ("enum_string", "enum_string_required", "enum_integer", "enum_integer_only", "enum_number", "outerEnum", "outerEnumInteger", "outerEnumDefaultValue", "outerEnumIntegerDefaultValue")
|
$AllProperties = ("enum_string", "enum_string_required", "enum_integer", "enum_integer_only", "enum_number", "outerEnum")
|
||||||
foreach ($name in $JsonParameters.PsObject.Properties.Name) {
|
foreach ($name in $JsonParameters.PsObject.Properties.Name) {
|
||||||
if (!($AllProperties.Contains($name))) {
|
if (!($AllProperties.Contains($name))) {
|
||||||
throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
|
throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
|
||||||
@ -177,24 +159,6 @@ function ConvertFrom-PSJsonToEnumTest {
|
|||||||
$OuterEnum = $JsonParameters.PSobject.Properties["outerEnum"].value
|
$OuterEnum = $JsonParameters.PSobject.Properties["outerEnum"].value
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumInteger"))) { #optional property not found
|
|
||||||
$OuterEnumInteger = $null
|
|
||||||
} else {
|
|
||||||
$OuterEnumInteger = $JsonParameters.PSobject.Properties["outerEnumInteger"].value
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumDefaultValue"))) { #optional property not found
|
|
||||||
$OuterEnumDefaultValue = $null
|
|
||||||
} else {
|
|
||||||
$OuterEnumDefaultValue = $JsonParameters.PSobject.Properties["outerEnumDefaultValue"].value
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!([bool]($JsonParameters.PSobject.Properties.name -match "outerEnumIntegerDefaultValue"))) { #optional property not found
|
|
||||||
$OuterEnumIntegerDefaultValue = $null
|
|
||||||
} else {
|
|
||||||
$OuterEnumIntegerDefaultValue = $JsonParameters.PSobject.Properties["outerEnumIntegerDefaultValue"].value
|
|
||||||
}
|
|
||||||
|
|
||||||
$PSO = [PSCustomObject]@{
|
$PSO = [PSCustomObject]@{
|
||||||
"enum_string" = ${EnumString}
|
"enum_string" = ${EnumString}
|
||||||
"enum_string_required" = ${EnumStringRequired}
|
"enum_string_required" = ${EnumStringRequired}
|
||||||
@ -202,9 +166,6 @@ function ConvertFrom-PSJsonToEnumTest {
|
|||||||
"enum_integer_only" = ${EnumIntegerOnly}
|
"enum_integer_only" = ${EnumIntegerOnly}
|
||||||
"enum_number" = ${EnumNumber}
|
"enum_number" = ${EnumNumber}
|
||||||
"outerEnum" = ${OuterEnum}
|
"outerEnum" = ${OuterEnum}
|
||||||
"outerEnumInteger" = ${OuterEnumInteger}
|
|
||||||
"outerEnumDefaultValue" = ${OuterEnumDefaultValue}
|
|
||||||
"outerEnumIntegerDefaultValue" = ${OuterEnumIntegerDefaultValue}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $PSO
|
return $PSO
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
#
|
||||||
|
# OpenAPI Petstore
|
||||||
|
# This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: "" \
|
||||||
|
# Version: 1.0.0
|
||||||
|
# Generated by OpenAPI Generator: https://openapi-generator.tech
|
||||||
|
#
|
||||||
|
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
|
||||||
|
Enum OuterEnum.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
|
||||||
|
No description available.
|
||||||
|
#>
|
||||||
|
|
||||||
|
enum OuterEnum {
|
||||||
|
# enum value: "placed"
|
||||||
|
placed
|
||||||
|
# enum value: "approved"
|
||||||
|
approved
|
||||||
|
# enum value: "delivered"
|
||||||
|
delivered
|
||||||
|
}
|
||||||
|
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
# Generated by: OpenAPI Generator Team
|
# Generated by: OpenAPI Generator Team
|
||||||
#
|
#
|
||||||
# Generated on: 04/06/2022
|
# Generated on: 04/08/2022
|
||||||
#
|
#
|
||||||
|
|
||||||
@{
|
@{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user