Skip to content

Commit d725cbb

Browse files
committed
[native_assets_cli] Fix syntax required fields
1 parent fb95354 commit d725cbb

File tree

7 files changed

+74
-124
lines changed

7 files changed

+74
-124
lines changed

pkgs/code_assets/doc/schema/shared/shared_definitions.schema.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"type": "integer"
1010
}
1111
},
12-
"required": []
12+
"required": [
13+
"target_ndk_api"
14+
]
1315
},
1416
"Architecture": {
1517
"type": "string",
@@ -82,6 +84,7 @@
8284
}
8385
},
8486
"required": [
87+
"architecture",
8588
"id",
8689
"link_mode",
8790
"os"
@@ -273,7 +276,10 @@
273276
"type": "integer"
274277
}
275278
},
276-
"required": []
279+
"required": [
280+
"target_sdk",
281+
"target_version"
282+
]
277283
},
278284
"LinkMode": {
279285
"type": "object",
@@ -350,7 +356,9 @@
350356
"type": "integer"
351357
}
352358
},
353-
"required": []
359+
"required": [
360+
"target_version"
361+
]
354362
},
355363
"OS": {
356364
"type": "string",

pkgs/code_assets/test/schema/schema_test.dart

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,7 @@ FieldsFunction _codeFields(AllTestData allTestData) {
8888
required Party party,
8989
}) {
9090
const requiredCodeAssetFields = [
91-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
92-
// ['architecture'],
91+
['architecture'],
9392
['os'],
9493
['id'],
9594
['link_mode'],
@@ -105,32 +104,22 @@ FieldsFunction _codeFields(AllTestData allTestData) {
105104
(['config', 'code', 'macos'], expectRequiredFieldMissing),
106105
(
107106
['config', 'code', 'macos', 'target_version'],
108-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
109-
expectOptionalFieldMissing,
107+
expectRequiredFieldMissing,
110108
),
111109
if (hook == Hook.link) ...[
112110
for (final field in requiredCodeAssetFields)
113111
(['assets', 0, ...field], expectRequiredFieldMissing),
114-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
115-
(['assets', 0, 'architecture'], expectOptionalFieldMissing),
116112
],
117113
],
118114
if (inputOrOutput == InputOrOutput.output) ...[
119115
for (final field in requiredCodeAssetFields)
120116
(['assets', 0, ...field], expectRequiredFieldMissing),
121-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
122-
(['assets', 0, 'architecture'], expectOptionalFieldMissing),
123117
if (hook == Hook.build) ...[
124118
for (final field in requiredCodeAssetFields)
125119
(
126120
['assetsForLinking', 'package_with_linker', 0, ...field],
127121
expectRequiredFieldMissing,
128122
),
129-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
130-
(
131-
['assetsForLinking', 'package_with_linker', 0, 'architecture'],
132-
expectOptionalFieldMissing,
133-
),
134123
],
135124
(['assets', staticIndex, 'file'], expectRequiredFieldMissing),
136125
(
@@ -200,16 +189,8 @@ List<(List<Object>, void Function(ValidationResults result))> _codeFieldsIOS({
200189
}) => <(List<Object>, void Function(ValidationResults result))>[
201190
if (inputOrOutput == InputOrOutput.input && hook == Hook.build) ...[
202191
(['config', 'code', 'ios'], expectRequiredFieldMissing),
203-
(
204-
['config', 'code', 'ios', 'target_sdk'],
205-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
206-
expectOptionalFieldMissing,
207-
),
208-
(
209-
['config', 'code', 'ios', 'target_version'],
210-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
211-
expectOptionalFieldMissing,
212-
),
192+
(['config', 'code', 'ios', 'target_sdk'], expectRequiredFieldMissing),
193+
(['config', 'code', 'ios', 'target_version'], expectRequiredFieldMissing),
213194
],
214195
];
215196

@@ -223,8 +204,7 @@ _codeFieldsAndroid({
223204
(['config', 'code', 'android'], expectRequiredFieldMissing),
224205
(
225206
['config', 'code', 'android', 'target_ndk_api'],
226-
// TODO(https://github.com/dart-lang/native/issues/2039): Make required.
227-
expectOptionalFieldMissing,
207+
expectRequiredFieldMissing,
228208
),
229209
],
230210
];

pkgs/native_assets_cli/lib/src/code_assets/code_asset.dart

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ final class CodeAsset {
5858
final OS os;
5959

6060
/// The architecture this asset can run on.
61-
final Architecture? architecture;
61+
final Architecture architecture;
6262

6363
/// The link mode for this native code.
6464
///
@@ -87,7 +87,7 @@ final class CodeAsset {
8787
required LinkMode linkMode,
8888
required OS os,
8989
Uri? file,
90-
Architecture? architecture,
90+
required Architecture architecture,
9191
}) : this._(
9292
id: 'package:$package/$name',
9393
linkMode: linkMode,
@@ -114,10 +114,7 @@ final class CodeAsset {
114114
return CodeAsset._(
115115
id: syntaxNode.id,
116116
os: OSSyntax.fromSyntax(syntaxNode.os),
117-
architecture: switch (syntaxNode.architecture) {
118-
null => null,
119-
final a => ArchitectureSyntax.fromSyntax(a),
120-
},
117+
architecture: ArchitectureSyntax.fromSyntax(syntaxNode.architecture),
121118
linkMode: LinkModeSyntax.fromSyntax(syntaxNode.linkMode),
122119
file: syntaxNode.file,
123120
);
@@ -155,7 +152,7 @@ final class CodeAsset {
155152
EncodedAsset encode() {
156153
final nativeCodeAsset = syntax.NativeCodeAsset.fromJson({});
157154
nativeCodeAsset.setup(
158-
architecture: architecture?.toSyntax(),
155+
architecture: architecture.toSyntax(),
159156
file: file,
160157
id: id,
161158
linkMode: linkMode.toSyntax(),

pkgs/native_assets_cli/lib/src/code_assets/config.dart

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ class IOSCodeConfig {
9696
IOSCodeConfig._(this._syntax);
9797

9898
/// Whether to target device or simulator.
99-
IOSSdk get targetSdk => IOSSdk.fromString(_syntax.targetSdk!);
99+
IOSSdk get targetSdk => IOSSdk.fromString(_syntax.targetSdk);
100100

101101
/// The lowest iOS version that the compiled code will be compatible with.
102-
int get targetVersion => _syntax.targetVersion!;
102+
int get targetVersion => _syntax.targetVersion;
103103

104104
IOSCodeConfig({required IOSSdk targetSdk, required int targetVersion})
105105
: _syntax = syntax.IOSCodeConfig(
@@ -108,14 +108,6 @@ class IOSCodeConfig {
108108
);
109109
}
110110

111-
extension IOSConfigSyntactic on IOSCodeConfig {
112-
IOSSdk? get targetSdkSyntactic => switch (_syntax.targetSdk) {
113-
null => null,
114-
final s => IOSSdk.fromString(s),
115-
};
116-
int? get targetVersionSyntactic => _syntax.targetVersion;
117-
}
118-
119111
/// Configuration provided when [CodeConfig.targetOS] is [OS.macOS].
120112
class AndroidCodeConfig {
121113
final syntax.AndroidCodeConfig _syntax;
@@ -124,33 +116,25 @@ class AndroidCodeConfig {
124116

125117
/// The minimum Android SDK API version to that the compiled code will be
126118
/// compatible with.
127-
int get targetNdkApi => _syntax.targetNdkApi!;
119+
int get targetNdkApi => _syntax.targetNdkApi;
128120

129121
AndroidCodeConfig({required int targetNdkApi})
130122
: _syntax = syntax.AndroidCodeConfig(targetNdkApi: targetNdkApi);
131123
}
132124

133-
extension AndroidConfigSyntactic on AndroidCodeConfig {
134-
int? get targetNdkApiSyntactic => _syntax.targetNdkApi;
135-
}
136-
137125
//// Configuration provided when [CodeConfig.targetOS] is [OS.macOS].
138126
class MacOSCodeConfig {
139127
final syntax.MacOSCodeConfig _syntax;
140128

141129
MacOSCodeConfig._(this._syntax);
142130

143131
/// The lowest MacOS version that the compiled code will be compatible with.
144-
int get targetVersion => _syntax.targetVersion!;
132+
int get targetVersion => _syntax.targetVersion;
145133

146134
MacOSCodeConfig({required int targetVersion})
147135
: _syntax = syntax.MacOSCodeConfig(targetVersion: targetVersion);
148136
}
149137

150-
extension MacOSConfigSyntactic on MacOSCodeConfig {
151-
int? get targetVersionSyntactic => _syntax.targetVersion;
152-
}
153-
154138
/// Extension to the [BuildOutputBuilder] providing access to emitting code
155139
/// assets (only available if code assets are supported).
156140
extension CodeAssetBuildOutputBuilder on EncodedAssetBuildOutputBuilder {

pkgs/native_assets_cli/lib/src/code_assets/syntax.g.dart

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ class AndroidCodeConfig {
1717

1818
AndroidCodeConfig.fromJson(this.json, {this.path = const []});
1919

20-
AndroidCodeConfig({int? targetNdkApi}) : json = {}, path = const [] {
20+
AndroidCodeConfig({required int targetNdkApi}) : json = {}, path = const [] {
2121
_targetNdkApi = targetNdkApi;
2222
json.sortOnKey();
2323
}
2424

25-
int? get targetNdkApi => _reader.get<int?>('target_ndk_api');
25+
int get targetNdkApi => _reader.get<int>('target_ndk_api');
2626

27-
set _targetNdkApi(int? value) {
27+
set _targetNdkApi(int value) {
2828
json.setOrRemove('target_ndk_api', value);
2929
}
3030

3131
List<String> _validateTargetNdkApi() =>
32-
_reader.validate<int?>('target_ndk_api');
32+
_reader.validate<int>('target_ndk_api');
3333

3434
List<String> validate() => [..._validateTargetNdkApi()];
3535

@@ -115,7 +115,7 @@ class NativeCodeAsset extends Asset {
115115
NativeCodeAsset.fromJson(super.json, {super.path}) : super.fromJson();
116116

117117
NativeCodeAsset({
118-
Architecture? architecture,
118+
required Architecture architecture,
119119
Uri? file,
120120
required String id,
121121
required LinkMode linkMode,
@@ -132,7 +132,7 @@ class NativeCodeAsset extends Asset {
132132
/// Setup all fields for [NativeCodeAsset] that are not in
133133
/// [Asset].
134134
void setup({
135-
Architecture? architecture,
135+
required Architecture architecture,
136136
Uri? file,
137137
required String id,
138138
required LinkMode linkMode,
@@ -146,18 +146,17 @@ class NativeCodeAsset extends Asset {
146146
json.sortOnKey();
147147
}
148148

149-
Architecture? get architecture {
150-
final jsonValue = _reader.get<String?>('architecture');
151-
if (jsonValue == null) return null;
149+
Architecture get architecture {
150+
final jsonValue = _reader.get<String>('architecture');
152151
return Architecture.fromJson(jsonValue);
153152
}
154153

155-
set _architecture(Architecture? value) {
156-
json.setOrRemove('architecture', value?.name);
154+
set _architecture(Architecture value) {
155+
json['architecture'] = value.name;
157156
}
158157

159158
List<String> _validateArchitecture() =>
160-
_reader.validate<String?>('architecture');
159+
_reader.validate<String>('architecture');
161160

162161
Uri? get file => _reader.optionalPath('file');
163162

@@ -607,30 +606,30 @@ class IOSCodeConfig {
607606

608607
IOSCodeConfig.fromJson(this.json, {this.path = const []});
609608

610-
IOSCodeConfig({String? targetSdk, int? targetVersion})
609+
IOSCodeConfig({required String targetSdk, required int targetVersion})
611610
: json = {},
612611
path = const [] {
613612
_targetSdk = targetSdk;
614613
_targetVersion = targetVersion;
615614
json.sortOnKey();
616615
}
617616

618-
String? get targetSdk => _reader.get<String?>('target_sdk');
617+
String get targetSdk => _reader.get<String>('target_sdk');
619618

620-
set _targetSdk(String? value) {
619+
set _targetSdk(String value) {
621620
json.setOrRemove('target_sdk', value);
622621
}
623622

624-
List<String> _validateTargetSdk() => _reader.validate<String?>('target_sdk');
623+
List<String> _validateTargetSdk() => _reader.validate<String>('target_sdk');
625624

626-
int? get targetVersion => _reader.get<int?>('target_version');
625+
int get targetVersion => _reader.get<int>('target_version');
627626

628-
set _targetVersion(int? value) {
627+
set _targetVersion(int value) {
629628
json.setOrRemove('target_version', value);
630629
}
631630

632631
List<String> _validateTargetVersion() =>
633-
_reader.validate<int?>('target_version');
632+
_reader.validate<int>('target_version');
634633

635634
List<String> validate() => [
636635
..._validateTargetSdk(),
@@ -838,19 +837,19 @@ class MacOSCodeConfig {
838837

839838
MacOSCodeConfig.fromJson(this.json, {this.path = const []});
840839

841-
MacOSCodeConfig({int? targetVersion}) : json = {}, path = const [] {
840+
MacOSCodeConfig({required int targetVersion}) : json = {}, path = const [] {
842841
_targetVersion = targetVersion;
843842
json.sortOnKey();
844843
}
845844

846-
int? get targetVersion => _reader.get<int?>('target_version');
845+
int get targetVersion => _reader.get<int>('target_version');
847846

848-
set _targetVersion(int? value) {
847+
set _targetVersion(int value) {
849848
json.setOrRemove('target_version', value);
850849
}
851850

852851
List<String> _validateTargetVersion() =>
853-
_reader.validate<int?>('target_version');
852+
_reader.validate<int>('target_version');
854853

855854
List<String> validate() => [..._validateTargetVersion()];
856855

0 commit comments

Comments
 (0)