execute method

  1. @override
Future<NativeStepResult> execute(
  1. NativeBuildContext context,
  2. ResolvedSource source
)
override

Execute this build step.

The context provides access to the build configuration and logger. Returns a NativeStepResult containing any artifacts produced by this step.

Implementation

@override
Future<NativeStepResult> execute(
  NativeBuildContext context,
  ResolvedSource source,
) async {
  final logger = context.logger;
  logger?.info('[export_artifact] Exporting artifact: ${declaration.id}');

  final primaryPath = expandRecipeValue(
    declaration.primaryPath,
    context,
    source,
  );
  final primaryEntry = await _resolveRequiredEntry(
    context: context,
    source: source,
    path: primaryPath,
    role: NativeArtifactRole.primary,
  );

  final companionEntries = <NativeArtifactEntry>[];
  for (final companion in declaration.companions) {
    final entry = await _resolveEntry(
      context: context,
      source: source,
      path: expandRecipeValue(companion.path, context, source),
      role: companion.role,
      optional: companion.optional,
    );
    if (entry != null) {
      companionEntries.add(entry);
    }
  }

  final artifact = BuiltNativeArtifact(
    id: declaration.id,
    target: context.target,
    kind: declaration.kind,
    primary: primaryEntry,
    companions: companionEntries,
  );

  logger?.info(
    '[export_artifact] Exported ${declaration.id} '
    '(${companionEntries.length + 1} entries)',
  );

  return NativeStepResult(artifacts: [artifact]);
}