Skip to content

Commit 9a7aeec

Browse files
authored
refactor: moved style and package_parameter_enabled to under assets.outputs. (#294)
* refactor: moved style and package_parameter_enabled to under assets.outputs * refactor: add pr link * chore: update comments * test: fix test * doc: update readme * doc: update sample * refactor: update comments * doc: rebase readme * refactor: change warning messages
1 parent 55cf4bf commit 9a7aeec

File tree

9 files changed

+187
-56
lines changed

9 files changed

+187
-56
lines changed

example/pubspec.yaml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ dependencies:
2121
collection: ^1.16.0
2222
crypto: ^3.0.1
2323
glob: ^2.0.2
24-
24+
2525
firebase_analytics: 9.1.8
2626
firebase_core: 1.14.1
2727
firebase_auth: 3.3.18
@@ -122,18 +122,18 @@ flutter_gen:
122122

123123
assets:
124124
enabled: true
125-
package_parameter_enabled: false
126-
# Assets.imagesChip
127-
# style: camel-case
128-
129-
# Assets.images_chip
130-
# style: snake-case
131-
132-
# Assets.images.chip (default style)
133-
# style: dot-delimiter
134125

135126
outputs:
136127
class_name: MyAssets
128+
package_parameter_enabled: false
129+
# Assets.imagesChip
130+
# style: camel-case
131+
132+
# Assets.images_chip
133+
# style: snake-case
134+
135+
# Assets.images.chip (default style)
136+
style: dot-delimiter
137137

138138
exclude:
139139
- assets/images/chip3/chip3.jpg

packages/core/lib/generators/assets_generator.dart

Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class AssetsGenConfig {
4646
final List<Glob> exclude;
4747

4848
String get packageParameterLiteral =>
49-
flutterGen.assets.packageParameterEnabled ? _packageName : '';
49+
flutterGen.assets.outputs.packageParameterEnabled ? _packageName : '';
5050
}
5151

5252
String generateAssets(
@@ -68,11 +68,94 @@ String generateAssets(
6868
if (config.flutterGen.integrations.rive) RiveIntegration(),
6969
];
7070

71-
if (config.flutterGen.assets.isDotDelimiterStyle) {
71+
// TODO: This code will be removed.
72+
// ignore: deprecated_member_use_from_same_package
73+
final deprecatedStyle = config.flutterGen.assets.style != null;
74+
final deprecatedPackageParam =
75+
// ignore: deprecated_member_use_from_same_package
76+
config.flutterGen.assets.packageParameterEnabled != null;
77+
if (deprecatedStyle || deprecatedPackageParam) {
78+
stderr.writeln('''
79+
80+
░░░░
81+
82+
██
83+
██░░██
84+
░░ ░░ ██░░░░░░██ ░░░░
85+
██░░░░░░░░░░██
86+
██░░░░░░░░░░██
87+
██░░░░░░░░░░░░░░██
88+
██░░░░░░██████░░░░░░██
89+
██░░░░░░██████░░░░░░██
90+
██░░░░░░░░██████░░░░░░░░██
91+
██░░░░░░░░██████░░░░░░░░██
92+
██░░░░░░░░░░██████░░░░░░░░░░██
93+
██░░░░░░░░░░░░██████░░░░░░░░░░░░██
94+
██░░░░░░░░░░░░██████░░░░░░░░░░░░██
95+
██░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░██
96+
██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██
97+
██░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░██
98+
██░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░██
99+
██░░░░░░░░░░░░░░░░░░██████░░░░░░░░░░░░░░░░░░██
100+
░░ ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██
101+
██████████████████████████████████████████
102+
103+
104+
░░''');
105+
}
106+
if (deprecatedStyle && deprecatedPackageParam) {
107+
stderr.writeln('''
108+
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
109+
│ ⚠️ Warning │
110+
│ The `style` and `package_parameter_enabled` property moved from asset to under asset.output. │
111+
│ It should be changed in the following pubspec.yaml. │
112+
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
113+
│ │
114+
│ [pubspec.yaml] │
115+
│ │
116+
│ fluttergen: │
117+
│ assets: │
118+
│ outputs: │
119+
│ style: snake-case │
120+
│ package_parameter_enabled: true │
121+
└────────────────────────────────────────────────────────────────────────────────────────────────┘''');
122+
} else if (deprecatedStyle) {
123+
stderr.writeln('''
124+
┌───────────────────────────────────────────────────────────────────────┐
125+
│ ⚠️ Warning │
126+
│ The `style` property moved from asset to under asset.output. │
127+
│ It should be changed in the following ways │
128+
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
129+
│ │
130+
│ [pubspec.yaml] │
131+
│ │
132+
│ fluttergen: │
133+
│ assets: │
134+
│ outputs: │
135+
│ style: snake-case │
136+
└───────────────────────────────────────────────────────────────────────┘''');
137+
} else if (deprecatedPackageParam) {
138+
stderr.writeln('''
139+
┌────────────────────────────────────────────────────────────────────────────────────────┐
140+
│ ⚠️ Warning │
141+
│ The `package_parameter_enabled` property moved from asset to under asset.output. │
142+
│ It should be changed in the following pubspec.yaml. │
143+
│ https://github.com/FlutterGen/flutter_gen/pull/294 │
144+
│ │
145+
│ [pubspec.yaml] │
146+
│ │
147+
│ fluttergen: │
148+
│ assets: │
149+
│ outputs: │
150+
│ package_parameter_enabled: true │
151+
└────────────────────────────────────────────────────────────────────────────────────────┘''');
152+
}
153+
154+
if (config.flutterGen.assets.outputs.isDotDelimiterStyle) {
72155
classesBuffer.writeln(_dotDelimiterStyleDefinition(config, integrations));
73-
} else if (config.flutterGen.assets.isSnakeCaseStyle) {
156+
} else if (config.flutterGen.assets.outputs.isSnakeCaseStyle) {
74157
classesBuffer.writeln(_snakeCaseStyleDefinition(config, integrations));
75-
} else if (config.flutterGen.assets.isCamelCaseStyle) {
158+
} else if (config.flutterGen.assets.outputs.isCamelCaseStyle) {
76159
classesBuffer.writeln(_camelCaseStyleDefinition(config, integrations));
77160
} else {
78161
throw 'The value of "flutter_gen/assets/style." is incorrect.';

packages/core/lib/settings/config.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ flutter_gen:
5454
5555
assets:
5656
enabled: true
57-
package_parameter_enabled: false
58-
style: dot-delimiter
5957
outputs:
6058
class_name: Assets
59+
package_parameter_enabled: false
60+
style: dot-delimiter
6161
exclude: []
6262
6363
fonts:

packages/core/lib/settings/pubspec.dart

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -107,45 +107,31 @@ class FlutterGenColors {
107107

108108
@JsonSerializable()
109109
class FlutterGenAssets {
110-
static const String dotDelimiterStyle = 'dot-delimiter';
111-
static const String snakeCaseStyle = 'snake-case';
112-
static const String camelCaseStyle = 'camel-case';
113-
114110
FlutterGenAssets({
115111
required this.enabled,
116-
required this.packageParameterEnabled,
117-
required this.style,
112+
this.packageParameterEnabled,
113+
this.style,
118114
required this.outputs,
119115
required this.exclude,
120-
}) {
121-
if (style != dotDelimiterStyle &&
122-
style != snakeCaseStyle &&
123-
style != camelCaseStyle) {
124-
throw ArgumentError.value(style, 'style');
125-
}
126-
}
116+
});
127117

128118
@JsonKey(name: 'enabled', required: true)
129119
final bool enabled;
130120

131-
@JsonKey(name: 'package_parameter_enabled', required: true)
132-
final bool packageParameterEnabled;
121+
@Deprecated('Moved to under outputs')
122+
@JsonKey(name: 'package_parameter_enabled', required: false)
123+
final bool? packageParameterEnabled;
133124

134-
@JsonKey(name: 'style', required: true)
135-
final String style;
125+
@Deprecated('Moved to under outputs')
126+
@JsonKey(name: 'style', required: false)
127+
final String? style;
136128

137129
@JsonKey(name: 'outputs', required: true)
138-
final FlutterGenElementOutputs outputs;
130+
final FlutterGenElementAssetsOutputs outputs;
139131

140132
@JsonKey(name: 'exclude', required: true)
141133
final List<String> exclude;
142134

143-
bool get isDotDelimiterStyle => style == dotDelimiterStyle;
144-
145-
bool get isSnakeCaseStyle => style == snakeCaseStyle;
146-
147-
bool get isCamelCaseStyle => style == camelCaseStyle;
148-
149135
factory FlutterGenAssets.fromJson(Map json) =>
150136
_$FlutterGenAssetsFromJson(json);
151137
}
@@ -189,11 +175,47 @@ class FlutterGenIntegrations {
189175

190176
@JsonSerializable()
191177
class FlutterGenElementOutputs {
192-
FlutterGenElementOutputs({required this.className});
178+
FlutterGenElementOutputs({
179+
required this.className,
180+
});
193181

194182
@JsonKey(name: 'class_name', required: true)
195183
final String className;
196184

197185
factory FlutterGenElementOutputs.fromJson(Map json) =>
198186
_$FlutterGenElementOutputsFromJson(json);
199187
}
188+
189+
@JsonSerializable()
190+
class FlutterGenElementAssetsOutputs extends FlutterGenElementOutputs {
191+
static const String dotDelimiterStyle = 'dot-delimiter';
192+
static const String snakeCaseStyle = 'snake-case';
193+
static const String camelCaseStyle = 'camel-case';
194+
195+
FlutterGenElementAssetsOutputs({
196+
required String className,
197+
required this.packageParameterEnabled,
198+
required this.style,
199+
}) : super(className: className) {
200+
if (style != dotDelimiterStyle &&
201+
style != snakeCaseStyle &&
202+
style != camelCaseStyle) {
203+
throw ArgumentError.value(style, 'style');
204+
}
205+
}
206+
207+
@JsonKey(name: 'package_parameter_enabled', required: true)
208+
final bool packageParameterEnabled;
209+
210+
@JsonKey(name: 'style', required: true)
211+
final String style;
212+
213+
bool get isDotDelimiterStyle => style == dotDelimiterStyle;
214+
215+
bool get isSnakeCaseStyle => style == snakeCaseStyle;
216+
217+
bool get isCamelCaseStyle => style == camelCaseStyle;
218+
219+
factory FlutterGenElementAssetsOutputs.fromJson(Map json) =>
220+
_$FlutterGenElementAssetsOutputsFromJson(json);
221+
}

packages/core/lib/settings/pubspec.g.dart

Lines changed: 33 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/core/test_resources/pubspec_assets_camel_case.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ flutter_gen:
55
line_length: 80 # Optional (default: 80)
66

77
assets:
8-
style: camel-case
8+
outputs:
9+
style: camel-case
910

1011
flutter:
1112
assets:

packages/core/test_resources/pubspec_assets_package_parameter.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ flutter_gen:
44
integrations:
55
flutter_svg: true
66
assets:
7-
package_parameter_enabled: true
7+
outputs:
8+
package_parameter_enabled: true
89

910
flutter:
1011
assets:

packages/core/test_resources/pubspec_assets_package_parameter_disable_null_safety.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ flutter_gen:
44
integrations:
55
flutter_svg: true
66
assets:
7-
package_parameter_enabled: true
7+
outputs:
8+
package_parameter_enabled: true
89

910
flutter:
1011
assets:

packages/core/test_resources/pubspec_assets_snake_case.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ flutter_gen:
55
line_length: 80 # Optional (default: 80)
66

77
assets:
8-
style: snake-case
8+
outputs:
9+
style: snake-case
910

1011
flutter:
1112
assets:

0 commit comments

Comments
 (0)