deploy method

Execute deployment for the specified platform(s) in context.

Implementation

Future<List<DeploymentResult>> deploy(DeploymentContext context) async {
  final results = <DeploymentResult>[];

  // Check prerequisites first
  final validation = await validatePrerequisites(context);
  if (validation.isFailed) {
    return [
      DeploymentResult.failure(
        platform: context.platform,
        lane: context.lane ?? 'default',
        message: 'Deployment pre-flight check failed: ${validation.message}',
        errors: [validation.message],
      ),
    ];
  }

  if (context.platform == BuildPlatform.all) {
    final androidStrategy = _strategies[BuildPlatform.android];
    if (androidStrategy != null) {
      results.add(await androidStrategy.deploy(context));
    }

    final iosStrategy = _strategies[BuildPlatform.ios];
    if (iosStrategy != null) {
      results.add(await iosStrategy.deploy(context));
    }

    return results;
  }

  final strategy = _strategies[context.platform];
  if (strategy == null) {
    return [
      DeploymentResult.failure(
        platform: context.platform,
        lane: context.lane ?? 'default',
        message: 'Unsupported deployment platform: ${context.platform}',
        errors: ['No strategy registered for platform ${context.platform}'],
      ),
    ];
  }

  results.add(await strategy.deploy(context));
  return results;
}