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('[$id] Starting command step');
final r = runner ?? ProcessRunner(logger: logger);
final workDirPath = workingDirectory == null
? context.directories.work.path
: expandRecipeValue(workingDirectory!, context, source);
final workDir = Directory(
p.isAbsolute(workDirPath)
? workDirPath
: p.join(context.directories.work.path, workDirPath),
);
final env = environment == null
? null
: expandRecipeStringMap(environment!, context, source);
for (final cmd in expandRecipeCommands(commands, context, source)) {
logger?.info('[$id] Running: ${cmd.join(' ')}');
await r.runStreaming(
cmd[0],
cmd.sublist(1),
workingDirectory: workDir,
environment: env,
);
logger?.info('[$id] Command completed');
}
return const NativeStepResult();
}