NativeProjectBuilder.fromSourceFallback constructor

NativeProjectBuilder.fromSourceFallback({
  1. required String assetName,
  2. required String libraryStem,
  3. required PrebuiltManifest manifest,
  4. required LinkMode linkMode,
  5. required SourceFallback? sourceFallback,
  6. List<PrebuiltResolver>? resolvers,
  7. String localDirectoryName = '.prebuilt',
})

Creates a NativeProjectBuilder from a SourceFallback with callback.

This is used by PrebuiltCodeAssetBuilder to bridge the callback-based API into the unified build pipeline.

Implementation

factory NativeProjectBuilder.fromSourceFallback({
  required String assetName,
  required String libraryStem,
  required PrebuiltManifest manifest,
  required LinkMode linkMode,
  required SourceFallback? sourceFallback,
  List<PrebuiltResolver>? resolvers,
  String localDirectoryName = '.prebuilt',
}) {
  // Derive a project name from the release source
  final projectName = switch (manifest.release) {
    GitHubReleaseSource(:final owner, :final repository) =>
      '$owner/$repository',
    GitLabReleaseSource(:final projectPath) => projectPath,
  };

  return NativeProjectBuilder(
    project: NativeProject(
      name: projectName,
      asset: NativeAssetSpec(
        assetName: assetName,
        libraryStem: libraryStem,
        linkMode: linkMode,
      ),
      prebuilts: manifest,
      sources: sourceFallback?.sources ?? [],
      build: const NativeBuildDefinition(recipes: []),
    ),
    sourceFallback: sourceFallback,
    resolvers: resolvers,
  );
}