Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[native_assets_cli] Separate out public API #885

Merged
merged 10 commits into from
Jan 12, 2024

Conversation

dcharkes
Copy link
Collaborator

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:

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.

Copy link

github-actions bot commented Jan 10, 2024

PR Health

Coverage ⚠️

Details
File Coverage
pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart 💚 96 %
pkgs/native_assets_builder/lib/src/model/asset.dart 💚 100 %
pkgs/native_assets_cli/lib/native_assets_cli.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/asset.dart 💚 100 %
pkgs/native_assets_cli/lib/src/api/build_config.dart 💚 100 %
pkgs/native_assets_cli/lib/src/api/build_mode.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/build_output.dart 💚 100 %
pkgs/native_assets_cli/lib/src/api/dependencies.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/ios_sdk.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/link_mode.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/link_mode_preference.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/metadata.dart 💔 Not covered
pkgs/native_assets_cli/lib/src/api/target.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/asset.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/build_config.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/build_mode.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/build_output.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/dependencies.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/ios_sdk.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/link_mode.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/link_mode_preference.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/metadata.dart 💚 100 %
pkgs/native_assets_cli/lib/src/model/target.dart 💚 100 %
pkgs/native_toolchain_c/lib/src/cbuilder/compiler_resolver.dart 💔 68 % ⬇️ 1 %

This check for test coverage is informational (issues shown here will not fail the PR).

This check can be disabled by tagging the PR with skip-coverage-check

License Headers ✔️

Details
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
Files
no missing headers

All source files should start with a license header.

Unrelated files missing license headers
Files
pkgs/jni/lib/src/third_party/global_env_extensions.dart
pkgs/jni/lib/src/third_party/generated_bindings.dart
pkgs/jni/lib/src/third_party/jni_bindings_generated.dart
pkgs/jni/lib/src/lang/jcharacter.dart
pkgs/jnigen/android_test_runner/lib/main.dart
pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart
pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart
pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart
pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart
pkgs/jnigen/example/in_app_java/lib/android_utils.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart
pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart
pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart
pkgs/jnigen/tool/command_runner.dart
pkgs/jnigen/lib/src/bindings/descriptor.dart
pkgs/jnigen/lib/src/elements/elements.g.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart
pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart
pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart
pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart
pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart
pkgs/ffigen/example/objective_c/avf_audio_bindings.dart
pkgs/ffigen/example/shared_bindings/generate.dart
pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart
pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart
pkgs/ffigen/example/swift/swift_api_bindings.dart
pkgs/ffigen/example/simple/generated_bindings.dart
pkgs/ffigen/example/libclang-example/generated_bindings.dart
pkgs/ffigen/lib/src/config_provider/config_spec.dart
pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart
tools/delete_pubspec_overrides.dart

Package publish validation ✔️

Details
Package Version Status
package:ffigen 12.0.0-wip WIP (no publish necessary)
package:jni 0.8.0-wip WIP (no publish necessary)
package:jnigen 0.8.0-wip WIP (no publish necessary)
package:native_assets_builder 0.3.1-wip WIP (no publish necessary)
package:native_assets_cli 0.4.1-wip WIP (no publish necessary)
package:native_toolchain_c 0.3.4 already published at pub.dev

Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

@dcharkes dcharkes marked this pull request as ready for review January 10, 2024 17:19
@dcharkes dcharkes requested a review from mosuem January 10, 2024 17:19
@dcharkes
Copy link
Collaborator Author

@mosuem, I still have to come up with a way to be able to land this where both the published dependencies and dependency overrides work. I'm thinking:

  1. Merge pkgs/native_assets_cli/lib/native_assets_cli_internal.dart that re-exports everything already
  2. Publish new native_assets_cli.
  3. Merge a PR that makes native_assets_builder depend on that import path instead.
  4. Then land this PR.

PTAL at the approach in this PR, do you think separating the API from the implementation in this way is a good idea?

@mosuem
Copy link
Member

mosuem commented Jan 11, 2024

  1. Merge pkgs/native_assets_cli/lib/native_assets_cli_internal.dart that re-exports everything already
  2. Publish new native_assets_cli.
  3. Merge a PR that makes native_assets_builder depend on that import path instead.
  4. Then land this PR.

SGTM

@auto-submit auto-submit bot merged commit 053a0f3 into main Jan 12, 2024
35 checks passed
@auto-submit auto-submit bot deleted the native-assets-cli-cleanup-2 branch January 12, 2024 09:38
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Jan 26, 2024
`package:ffi` has moved from dart-lang/ffi to dart-lang/native.
Stop pulling in dart-lang/ffi and update the revision for
dart-lang/native to include a revision with `package:ffi`
`tools/generate_package_config.dart` should automatically update
the toplevel `.dart_tool/package_config.json` to point to the new
checkout location the Dart SDK.

Also rolls breaking change in native_assets_cli:
dart-lang/native#885

And rolls the move of the test projects:
dart-lang/native#938

Change-Id: Ibc1c88026487bece2580a7d3d4ceb7ee50cd76d0
Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-mac-release-try,pkg-mac-release-arm64-try,pkg-win-release-try,pkg-win-release-arm64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/346761
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Moritz Sümmermann <mosum@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants