executeProfile method

Future<void> executeProfile(
  1. ReplayHarnessConfig replayConfig,
  2. ProfileHarnessConfig config
)

Implementation

Future<void> executeProfile(
  ReplayHarnessConfig replayConfig,
  ProfileHarnessConfig config,
) async {
  if (config.error case final error?) {
    usageException(error);
  }

  var prepared = await _prepare(replayConfig);
  final customized = await customizeReplayScenario(
    prepared.scenario,
    prepared.scenarioPath,
  );
  if (customized != null) {
    await customized.save(prepared.scenarioPath);
    prepared = PreparedReplay(
      selection: prepared.selection,
      scenario: customized,
      actionCount: customized.actions.length,
    );
  }

  await prepareProfileArtifactDir(config.artifactDir);

  final profilerArgs = buildProfileArgs(config, prepared.scenarioPath);
  final env =
      customizeReplayEnvironment(replayConfig) ?? io.Platform.environment;

  final process = await io.Process.start(
    config.profilerCommand,
    profilerArgs,
    environment: env,
    mode: io.ProcessStartMode.inheritStdio,
    workingDirectory: io.Directory.current.path,
  );

  final exitCode = await _waitForExit(process, config.timeoutSeconds);
  onProfileCompleted(config, exitCode);
  if (exitCode != 0) {
    io.exitCode = exitCode;
  }
}