Skip to content

Commit 053a0f3

Browse files
authored
[native_assets_cli] Separate out public API (#885)
This does not change any of the public API yet, but it slims down the API surface of `package:native_assets_cli` to the bare minimum. Internal details may be accessed in `package:native_assets_builder` via: ```dart import 'package:native_assets_cli/native_assets_cli_internal.dart'; ``` This enables the yaml serialization/deserialization to live in one place and be unit tested as one. One hack is that we also access `package:native_assets_cli/native_assets_cli_internal.dart` in `package:native_toolchain_c` in the unit tests to depend on the C compilers provided on the Dart CI.
1 parent a1d2bb6 commit 053a0f3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1078
-127
lines changed

pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'dart:async';
66
import 'dart:io';
77

88
import 'package:logging/logging.dart';
9-
import 'package:native_assets_cli/native_assets_cli.dart';
9+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
1010
import 'package:package_config/package_config.dart';
1111

1212
import '../package_layout/package_layout.dart';

pkgs/native_assets_builder/lib/src/model/asset.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:native_assets_cli/native_assets_cli.dart';
5+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
66

77
import '../utils/yaml.dart';
88

pkgs/native_assets_builder/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ environment:
1010
dependencies:
1111
graphs: ^2.3.1
1212
logging: ^1.2.0
13-
native_assets_cli: ^0.3.2
13+
native_assets_cli: ^0.4.0
1414
package_config: ^2.1.0
1515
yaml: ^3.1.2
1616
yaml_edit: ^2.1.0

pkgs/native_assets_builder/test/build_runner/build_runner_dry_run_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'dart:io';
66

77
import 'package:file_testing/file_testing.dart';
8-
import 'package:native_assets_cli/native_assets_cli.dart';
8+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
99
import 'package:test/test.dart';
1010

1111
import '../helpers.dart';

pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:native_assets_builder/src/build_runner/build_runner.dart';
6-
import 'package:native_assets_cli/native_assets_cli.dart';
6+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
77
import 'package:test/test.dart';
88

99
import '../helpers.dart';

pkgs/native_assets_builder/test/build_runner/build_runner_run_in_isolation_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:io';
66

7-
import 'package:native_assets_cli/native_assets_cli.dart';
7+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
88
import 'package:test/test.dart';
99

1010
import '../helpers.dart';

pkgs/native_assets_builder/test/build_runner/helpers.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import 'dart:io';
88
import 'package:file_testing/file_testing.dart';
99
import 'package:logging/logging.dart';
1010
import 'package:native_assets_builder/native_assets_builder.dart';
11-
import 'package:native_assets_cli/native_assets_cli.dart';
11+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
1212
import 'package:test/test.dart';
1313

1414
import '../helpers.dart';

pkgs/native_assets_builder/test/build_runner/packaging_preference_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:native_assets_cli/native_assets_cli.dart';
5+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
66
import 'package:test/test.dart';
77

88
import '../helpers.dart';

pkgs/native_assets_builder/test/data/cyclic_package_1/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies:
1111
cli_config: ^0.1.1
1212
cyclic_package_2:
1313
path: ../cyclic_package_2
14-
native_assets_cli: ^0.3.2
14+
native_assets_cli: ^0.4.0
1515
yaml: ^3.1.1
1616
yaml_edit: ^2.1.0
1717

pkgs/native_assets_builder/test/data/cyclic_package_2/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ dependencies:
1111
cli_config: ^0.1.1
1212
cyclic_package_1:
1313
path: ../cyclic_package_1
14-
native_assets_cli: ^0.3.2
14+
native_assets_cli: ^0.4.0
1515
yaml: ^3.1.1
1616
yaml_edit: ^2.1.0
1717

pkgs/native_assets_builder/test/data/native_add/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ environment:
1010
dependencies:
1111
cli_config: ^0.1.1
1212
logging: ^1.1.1
13-
native_assets_cli: ^0.3.2
14-
native_toolchain_c: ^0.3.2
13+
native_assets_cli: ^0.4.0
14+
native_toolchain_c: ^0.3.4
1515

1616
dev_dependencies:
1717
ffigen: ^8.0.2

pkgs/native_assets_builder/test/data/native_add_add_source/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ environment:
1010
dependencies:
1111
cli_config: ^0.1.1
1212
logging: ^1.1.1
13-
native_assets_cli: ^0.3.2
14-
native_toolchain_c: ^0.3.2
13+
native_assets_cli: ^0.4.0
14+
native_toolchain_c: ^0.3.4
1515

1616
dev_dependencies:
1717
ffigen: ^8.0.2

pkgs/native_assets_builder/test/data/native_subtract/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ environment:
1010
dependencies:
1111
cli_config: ^0.1.1
1212
logging: ^1.1.1
13-
native_assets_cli: ^0.3.2
14-
native_toolchain_c: ^0.3.2
13+
native_assets_cli: ^0.4.0
14+
native_toolchain_c: ^0.3.4
1515

1616
dev_dependencies:
1717
ffigen: ^8.0.2

pkgs/native_assets_builder/test/data/package_reading_metadata/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
package_with_metadata:
1414
path: ../package_with_metadata/
1515
yaml: ^3.1.1

pkgs/native_assets_builder/test/data/package_with_metadata/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
yaml: ^3.1.1
1414
yaml_edit: ^2.1.0
1515

pkgs/native_assets_builder/test/data/wrong_build_output/build.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:io';
66

7-
import 'package:native_assets_cli/native_assets_cli.dart';
7+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
88

99
void main(List<String> args) async {
1010
final buildConfig = await BuildConfig.fromArgs(args);

pkgs/native_assets_builder/test/data/wrong_build_output/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
yaml: ^3.1.1
1414
yaml_edit: ^2.1.0
1515

pkgs/native_assets_builder/test/data/wrong_build_output_2/build.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:io';
66

7-
import 'package:native_assets_cli/native_assets_cli.dart';
7+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
88

99
void main(List<String> args) async {
1010
final buildConfig = await BuildConfig.fromArgs(args);

pkgs/native_assets_builder/test/data/wrong_build_output_2/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
yaml: ^3.1.1
1414
yaml_edit: ^2.1.0
1515

pkgs/native_assets_builder/test/data/wrong_build_output_3/build.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import 'dart:io';
66

7-
import 'package:native_assets_cli/native_assets_cli.dart';
7+
import 'package:native_assets_cli/native_assets_cli_internal.dart';
88

99
void main(List<String> args) async {
1010
final buildConfig = await BuildConfig.fromArgs(args);

pkgs/native_assets_builder/test/data/wrong_build_output_3/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
yaml: ^3.1.1
1414
yaml_edit: ^2.1.0
1515

pkgs/native_assets_builder/test/data/wrong_namespace_asset/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ environment:
99

1010
dependencies:
1111
cli_config: ^0.1.1
12-
native_assets_cli: ^0.3.2
12+
native_assets_cli: ^0.4.0
1313
yaml: ^3.1.1
1414
yaml_edit: ^2.1.0
1515

pkgs/native_assets_builder/test/model/asset_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// ignore_for_file: undefined_hidden_name
66

77
import 'package:native_assets_builder/src/model/asset.dart';
8-
import 'package:native_assets_cli/native_assets_cli.dart'
8+
import 'package:native_assets_cli/native_assets_cli_internal.dart'
99
hide AssetIterable, AssetRelativePath;
1010
import 'package:test/test.dart';
1111

pkgs/native_assets_cli/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.4.1-wip
2+
3+
- **Breaking change** Removed all code not used in `build.dart` scripts out of
4+
the public API.
5+
16
## 0.4.0
27

38
- Added [example/use_dart_api/](example/use_dart_api/) detailing how to use

pkgs/native_assets_cli/example/native_add_library/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ environment:
1111
dependencies:
1212
cli_config: ^0.1.1
1313
logging: ^1.1.1
14-
native_assets_cli: ^0.3.2
15-
native_toolchain_c: ^0.3.2
14+
native_assets_cli: ^0.4.0
15+
native_toolchain_c: ^0.3.4
1616

1717
dev_dependencies:
1818
ffigen: ^8.0.2

pkgs/native_assets_cli/example/use_dart_api/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ version: 0.1.0
55
publish_to: none
66

77
environment:
8-
sdk: ">=3.0.0 <4.0.0"
8+
sdk: '>=3.0.0 <4.0.0'
99

1010
dependencies:
1111
cli_config: ^0.1.1
1212
logging: ^1.1.1
13-
native_assets_cli: ^0.3.2
14-
native_toolchain_c: ^0.3.2
13+
native_assets_cli: ^0.4.0
14+
native_toolchain_c: ^0.3.4
1515

1616
dev_dependencies:
1717
ffigen: ^10.0.0

pkgs/native_assets_cli/lib/native_assets_cli.dart

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
/// native assets CLI, e.g. a `build.dart` script.
77
library native_assets_cli;
88

9-
export 'src/model/asset.dart';
10-
export 'src/model/build_config.dart';
11-
export 'src/model/build_mode.dart';
12-
export 'src/model/build_output.dart';
13-
export 'src/model/dependencies.dart';
14-
export 'src/model/ios_sdk.dart';
15-
export 'src/model/link_mode.dart';
16-
export 'src/model/link_mode_preference.dart';
17-
export 'src/model/metadata.dart';
18-
export 'src/model/target.dart';
9+
export 'src/api/asset.dart';
10+
export 'src/api/build_config.dart';
11+
export 'src/api/build_mode.dart';
12+
export 'src/api/build_output.dart';
13+
export 'src/api/dependencies.dart';
14+
export 'src/api/ios_sdk.dart';
15+
export 'src/api/link_mode.dart';
16+
export 'src/api/link_mode_preference.dart';
17+
export 'src/api/metadata.dart';
18+
export 'src/api/target.dart';
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import '../model/asset.dart' as model;
6+
import '../model/link_mode.dart' as model;
7+
import '../model/target.dart' as model;
8+
import 'link_mode.dart';
9+
import 'target.dart';
10+
11+
abstract class AssetPath {}
12+
13+
/// Asset at absolute path [uri].
14+
abstract class AssetAbsolutePath implements AssetPath {
15+
Uri get uri;
16+
17+
factory AssetAbsolutePath(Uri uri) = model.AssetAbsolutePath;
18+
}
19+
20+
/// Asset is avaliable on the system `PATH`.
21+
///
22+
/// [uri] only contains a file name.
23+
abstract class AssetSystemPath implements AssetPath {
24+
Uri get uri;
25+
26+
factory AssetSystemPath(Uri uri) = model.AssetSystemPath;
27+
}
28+
29+
/// Asset is loaded in the process and symbols are available through
30+
/// `DynamicLibrary.process()`.
31+
abstract class AssetInProcess implements AssetPath {
32+
factory AssetInProcess() = model.AssetInProcess;
33+
}
34+
35+
/// Asset is embedded in executable and symbols are available through
36+
/// `DynamicLibrary.executable()`.
37+
abstract class AssetInExecutable implements AssetPath {
38+
factory AssetInExecutable() = model.AssetInExecutable;
39+
}
40+
41+
abstract class Asset {
42+
LinkMode get linkMode;
43+
String get id;
44+
Target get target;
45+
AssetPath get path;
46+
47+
factory Asset({
48+
required String id,
49+
required LinkMode linkMode,
50+
required Target target,
51+
required AssetPath path,
52+
}) =>
53+
model.Asset(
54+
id: id,
55+
linkMode: linkMode as model.LinkMode,
56+
target: target as model.Target,
57+
path: path as model.AssetPath,
58+
);
59+
}

0 commit comments

Comments
 (0)