Skip to content

Commit e8481c6

Browse files
committed
Changed options to enum WIP
1 parent 16fe5e5 commit e8481c6

File tree

3 files changed

+62
-32
lines changed

3 files changed

+62
-32
lines changed

bin/configs/aspnetcore-8.0-use-centralized-package-version-management.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.
44
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
55
additionalProperties:
66
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'
7-
aspnetCoreVersion: 8.0
7+
aspnetCoreVersion: "8.0"
88
userSecretsGuid: 'cb87e868-8646-48ef-9bb6-344b537d0d37'
9-
useCentralizedPackageVersionManagement: true
10-
centralizedPackageVersionManagementOptOut: false
9+
centralizedPackageVersionManagement: "jghfj"

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetServerCodegen.java

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.swagger.v3.oas.models.OpenAPI;
2222
import io.swagger.v3.oas.models.media.Schema;
2323
import io.swagger.v3.parser.util.SchemaTypeUtil;
24+
import lombok.Getter;
2425
import lombok.Setter;
2526
import org.openapitools.codegen.*;
2627
import org.openapitools.codegen.meta.features.*;
@@ -64,8 +65,8 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen {
6465
public static final String USE_NEWTONSOFT = "useNewtonsoft";
6566
public static final String USE_DEFAULT_ROUTING = "useDefaultRouting";
6667
public static final String NEWTONSOFT_VERSION = "newtonsoftVersion";
67-
public static final String USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT = "useCentralizedPackageVersionManagement";
68-
public static final String CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT = "centralizedPackageVersionManagementOptOut";
68+
public static final String CENTRALIZED_PACKAGE_VERSION_MANAGEMENT = "centralizedPackageVersionManagement";
69+
public static final String USE_PACKAGE_VERSIONS = "usePackageVersions";
6970

7071
@Setter
7172
private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}";
@@ -94,8 +95,27 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen {
9495
private boolean useNewtonsoft = true;
9596
private boolean useDefaultRouting = true;
9697
private String newtonsoftVersion = "3.0.0";
97-
private boolean useCentralizedPackageVersionManagement = false;
98-
private boolean centralizedPackageVersionManagementOptOut = false;
98+
protected CliOption centralizedPackageVersionManagement = new CliOption(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"Option to control the usage of centralized package version management. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management");
99+
100+
101+
@Getter
102+
private enum CentralizedPackageVersionOptions {
103+
Default("default","Property in project wont be used"),
104+
Use("use","Centralized package version management will be used"),
105+
OptOut("optout","Opt out of centralized package version management. Set this if you have a Directory.Packages.pros file but want this project to ignore it. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management");
106+
107+
private final String Value;
108+
private final String Description;
109+
110+
CentralizedPackageVersionOptions(String Value,String Description) {
111+
this.Value = Value;
112+
this.Description = Description;
113+
}
114+
115+
public String GetDescription(){
116+
return this.Description;
117+
}
118+
}
99119

100120
public AspNetServerCodegen() {
101121
super();
@@ -254,13 +274,7 @@ public AspNetServerCodegen() {
254274
"Uses the Newtonsoft JSON library.",
255275
useNewtonsoft);
256276

257-
addSwitch(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,
258-
"Uses centralized package version management. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management",
259-
useCentralizedPackageVersionManagement);
260-
261-
addSwitch(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT,
262-
"Opt out of centralized package version management. Set this if you have a Directory.Packages.pros file but want this project to ignore it. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management",
263-
centralizedPackageVersionManagementOptOut);
277+
addCentralizedPackageVersionManagementOption();
264278

265279
addOption(NEWTONSOFT_VERSION,
266280
"Version for Microsoft.AspNetCore.Mvc.NewtonsoftJson for ASP.NET Core 3.0+",
@@ -316,6 +330,16 @@ public AspNetServerCodegen() {
316330
addOption(modelClassModifier.getOpt(), modelClassModifier.getDescription(), modelClassModifier.getOptValue());
317331
}
318332

333+
private void addCentralizedPackageVersionManagementOption(){
334+
centralizedPackageVersionManagement.setType("String");
335+
for (CentralizedPackageVersionOptions option : CentralizedPackageVersionOptions.values() ) {
336+
centralizedPackageVersionManagement.addEnum(option.Value, option.GetDescription());
337+
}
338+
centralizedPackageVersionManagement.setDefault(CentralizedPackageVersionOptions.Default.Value);
339+
centralizedPackageVersionManagement.setOptValue(centralizedPackageVersionManagement.getDefault());
340+
cliOptions.add(centralizedPackageVersionManagement);
341+
}
342+
319343
@Deprecated
320344
@Override
321345
protected Set<String> getNullableTypes() {
@@ -700,11 +724,21 @@ private void setBuildTarget() {
700724
*/
701725
private void setCentralizedPackageVersionManagementSettings() {
702726

703-
additionalProperties.putIfAbsent(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT, centralizedPackageVersionManagementOptOut);
727+
additionalProperties.put(USE_PACKAGE_VERSIONS, true);
728+
729+
if(additionalProperties.containsKey(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT)) {
730+
var chosenOption = additionalProperties.get(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT);
704731

705-
// If opt out is true then the package versions should always be added regardless of USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT value
706-
if ((boolean) additionalProperties.get(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT) && additionalProperties.containsKey(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT)) {
707-
additionalProperties.replace(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT, false);
732+
if (chosenOption == CentralizedPackageVersionOptions.Default) {
733+
additionalProperties.remove(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT);
734+
}
735+
if (chosenOption == CentralizedPackageVersionOptions.Use) {
736+
additionalProperties.replace(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"true");
737+
additionalProperties.put(USE_PACKAGE_VERSIONS, false);
738+
}
739+
if (chosenOption == CentralizedPackageVersionOptions.OptOut) {
740+
additionalProperties.replace(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"false");
741+
}
708742
}
709743
}
710744

modules/openapi-generator/src/main/resources/aspnetcore/3.0/Project.csproj.mustache

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@
1818
<UserSecretsId>{{userSecretsGuid}}</UserSecretsId>
1919
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
2020
<DockerfileContext>..\..</DockerfileContext>
21-
{{#useCentralizedPackageVersionManagement}}
22-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
23-
{{/useCentralizedPackageVersionManagement}}
24-
{{#centralizedPackageVersionManagementOptOut}}
25-
<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>
26-
{{/centralizedPackageVersionManagementOptOut}}
21+
{{#centralizedPackageVersionManagement}}
22+
<ManagePackageVersionsCentrally>{{.}}</ManagePackageVersionsCentrally>
23+
{{/centralizedPackageVersionManagement}}
2724
</PropertyGroup>
2825
<ItemGroup>
2926
{{#useSeparateModelProject}}
@@ -38,25 +35,25 @@
3835
<PackageReference Include="Microsoft.AspNetCore.App" />
3936
{{/useFrameworkReference}}
4037
{{^useSeparateModelProject}}
41-
<PackageReference Include="Microsoft.Extensions.Configuration.Json" {{^useCentralizedPackageVersionManagement}}Version="{{aspnetCoreVersion}}.0" {{/useCentralizedPackageVersionManagement}}/>
38+
<PackageReference Include="Microsoft.Extensions.Configuration.Json" {{#usePackageVersions}}Version="{{aspnetCoreVersion}}.0" {{/usePackageVersions}}/>
4239
{{/useSeparateModelProject}}
4340
{{#useSwashbuckle}}
44-
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" {{^useCentralizedPackageVersionManagement}}Version="1.10.8" {{/useCentralizedPackageVersionManagement}}/>
41+
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" {{#usePackageVersions}}Version="1.10.8" {{/usePackageVersions}}/>
4542
{{#useNewtonsoft}}
46-
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" {{^useCentralizedPackageVersionManagement}}Version="{{swashbuckleVersion}}" {{/useCentralizedPackageVersionManagement}}/>
47-
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" {{^useCentralizedPackageVersionManagement}}Version="{{swashbuckleVersion}}" {{/useCentralizedPackageVersionManagement}}/>
43+
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" {{#usePackageVersions}}Version="{{swashbuckleVersion}}" {{/usePackageVersions}}/>
44+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" {{#usePackageVersions}}Version="{{swashbuckleVersion}}" {{/usePackageVersions}}/>
4845
{{/useNewtonsoft}}
4946
{{^useNewtonsoft}}
50-
<PackageReference Include="Swashbuckle.AspNetCore" {{^useCentralizedPackageVersionManagement}}Version="{{swashbuckleVersion}}" {{/useCentralizedPackageVersionManagement}}/>
47+
<PackageReference Include="Swashbuckle.AspNetCore" {{#usePackageVersions}}Version="{{swashbuckleVersion}}" {{/usePackageVersions}}/>
5148
{{/useNewtonsoft}}
52-
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" {{^useCentralizedPackageVersionManagement}}Version="{{swashbuckleVersion}}" {{/useCentralizedPackageVersionManagement}}/>
49+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" {{#usePackageVersions}}Version="{{swashbuckleVersion}}" {{/usePackageVersions}}/>
5350
{{/useSwashbuckle}}
5451
{{^useSwashbuckle}}
5552
{{#useNewtonsoft}}
56-
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" {{^useCentralizedPackageVersionManagement}}Version="{{newtonsoftVersion}}" {{/useCentralizedPackageVersionManagement}}/>
53+
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" {{#usePackageVersions}}Version="{{newtonsoftVersion}}" {{/usePackageVersions}}/>
5754
{{/useNewtonsoft}}
5855
{{/useSwashbuckle}}
59-
<PackageReference Include="JsonSubTypes" {{^useCentralizedPackageVersionManagement}}Version="1.8.0" {{/useCentralizedPackageVersionManagement}}/>
56+
<PackageReference Include="JsonSubTypes" {{#usePackageVersions}}Version="1.8.0" {{/usePackageVersions}}/>
6057
</ItemGroup>
6158
<ItemGroup>
6259
<!--<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="{{aspnetCoreVersion}}.0" />-->

0 commit comments

Comments
 (0)