Skip to content

Commit 7a8c15f

Browse files
committed
add skipCopyWith option for dart-dio
1 parent 814f406 commit 7a8c15f

4 files changed

Lines changed: 23 additions & 0 deletions

File tree

docs/generators/dart-dio.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
3737
|pubRepository|Repository in generated pubspec| |null|
3838
|pubVersion|Version in generated pubspec| |1.0.0|
3939
|serializationLibrary|Specify serialization library|<dl><dt>**built_value**</dt><dd>[DEFAULT] built_value</dd><dt>**json_serializable**</dt><dd>[BETA] json_serializable</dd></dl>|built_value|
40+
|skipCopyWith|Skip CopyWith when using Json Serializable for serialization| |false|
4041
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
4142
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
4243
|sourceFolder|source folder for generated code| |src|

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
6969

7070
private static final String DIO_IMPORT = "package:dio/dio.dart";
7171
public static final String FINAL_PROPERTIES = "finalProperties";
72+
public static final String SKIP_COPY_WITH = "skipCopyWith";
7273
public static final String FINAL_PROPERTIES_DEFAULT_VALUE = "true";
74+
public static final String SKIP_COPY_WITH_DEFAULT_VALUE = "false";
7375

7476
private static final String CLIENT_NAME = "clientName";
7577

@@ -138,6 +140,11 @@ public DartDioClientCodegen() {
138140
final CliOption finalProperties = CliOption.newBoolean(FINAL_PROPERTIES, "Whether properties are marked as final when using Json Serializable for serialization");
139141
finalProperties.setDefault("true");
140142
cliOptions.add(finalProperties);
143+
144+
// skip CopyWith option
145+
final CliOption skipCopyWith = CliOption.newBoolean(SKIP_COPY_WITH, "Skip CopyWith when using Json Serializable for serialization");
146+
skipCopyWith.setDefault("false");
147+
cliOptions.add(skipCopyWith);
141148
}
142149

143150
@Override
@@ -182,6 +189,13 @@ public void processOpts() {
182189
additionalProperties.put(FINAL_PROPERTIES, Boolean.parseBoolean(additionalProperties.get(FINAL_PROPERTIES).toString()));
183190
}
184191

192+
if (!additionalProperties.containsKey(SKIP_COPY_WITH)) {
193+
additionalProperties.put(SKIP_COPY_WITH, Boolean.parseBoolean(SKIP_COPY_WITH_DEFAULT_VALUE));
194+
LOGGER.debug("skipCopyWith not set, using default {}", SKIP_COPY_WITH_DEFAULT_VALUE);
195+
} else {
196+
additionalProperties.put(SKIP_COPY_WITH, Boolean.parseBoolean(additionalProperties.get(SKIP_COPY_WITH).toString()));
197+
}
198+
185199
if (!additionalProperties.containsKey(CLIENT_NAME)) {
186200
final String name = org.openapitools.codegen.utils.StringUtils.camelize(pubName);
187201
additionalProperties.put(CLIENT_NAME, name);

modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ dependencies:
2525
equatable: '^2.0.7'
2626
{{/useEquatable}}
2727
{{#useJsonSerializable}}
28+
{{^skipCopyWith}}
2829
copy_with_extension: '^7.1.0'
30+
{{/skipCopyWith}}
2931
json_annotation: '^4.9.0'
3032
{{/useJsonSerializable}}
3133
{{#useDateLibTimeMachine}}
@@ -39,7 +41,9 @@ dev_dependencies:
3941
{{/useBuiltValue}}
4042
{{#useJsonSerializable}}
4143
build_runner: any
44+
{{^skipCopyWith}}
4245
copy_with_extension_gen: ^7.1.0
46+
{{/skipCopyWith}}
4347
json_serializable: '^6.9.3'
4448
{{/useJsonSerializable}}
4549
test: '^1.16.0'

modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/json_serializable/class.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
{{^skipCopyWith}}
12
import 'package:copy_with_extension/copy_with_extension.dart';
3+
{{/skipCopyWith}}
24
import 'package:json_annotation/json_annotation.dart';
35
{{#useEquatable}}
46
import 'package:equatable/src/equatable_utils.dart';
@@ -18,7 +20,9 @@ part '{{classFilename}}.g.dart';
1820
{{#isDeprecated}}
1921
@Deprecated('{{{classname}}} has been deprecated')
2022
{{/isDeprecated}}
23+
{{^skipCopyWith}}
2124
@CopyWith()
25+
{{/skipCopyWith}}
2226
@JsonSerializable(
2327
checked: true,
2428
createToJson: true,

0 commit comments

Comments
 (0)