execute method
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]);
}