performLaunch static method

Future<void> performLaunch(
  1. Client cloudApiClient,
  2. FileUploaderFactory fileUploaderFactory,
  3. CommandLogger logger,
  4. ProjectLaunch projectSetup, {
  5. required String consoleServer,
  6. required bool openBrowser,
  7. required int deployConcurrency,
  8. required bool wetRun,
  9. required bool deployShowFiles,
  10. String? deployOutputPath,
  11. bool deploySkipTailingStatus = false,
  12. IOSink? stdout,
  13. IOSink? stderr,
})

Implementation

static Future<void> performLaunch(
  final Client cloudApiClient,
  final FileUploaderFactory fileUploaderFactory,
  final CommandLogger logger,
  final ProjectLaunch projectSetup, {
  required final String consoleServer,
  required final bool openBrowser,
  required final int deployConcurrency,
  required final bool wetRun,
  required final bool deployShowFiles,
  final String? deployOutputPath,
  final bool deploySkipTailingStatus = false,
  final IOSink? stdout,
  final IOSink? stderr,
}) async {
  final projectId = projectSetup.projectId;
  if (projectId == null) {
    throw StateError('Project ID not set in project setup.');
  }

  final projectDir = projectSetup.projectDir;
  final configFilePath = projectSetup.configFilePath;
  final performDeploy = projectSetup.performDeploy;

  final safeDartSdk = await ProjectCommands.linkProject(
    cloudApiClient,
    logger: logger,
    projectId: projectId,
    projectDirectory: projectDir.path,
    configFilePath: configFilePath,
    dartVersionOverride: projectSetup.dartVersionOverride,
    preDeployScripts: projectSetup.suggestedPreDeployScripts,
    suppressCommandMessages: true,
  );

  await _populateCustomPasswords(
    cloudApiClient,
    logger,
    projectId: projectId,
    passwords: projectSetup.selectedPasswords,
  );

  if (!performDeploy) {
    logger.terminalCommand(
      'scloud launch',
      message:
          'Deployment skipped. Run this command again to deploy to the cloud:',
      newParagraph: true,
    );
    return;
  }

  await Deploy.deploy(
    cloudApiClient,
    fileUploaderFactory,
    logger: logger,
    projectId: projectId,
    projectDir: projectDir.path,
    projectConfigFilePath: configFilePath,
    concurrency: deployConcurrency,
    wetRun: wetRun,
    showFiles: deployShowFiles,
    outputPath: deployOutputPath,
    skipTailingStatus: deploySkipTailingStatus,
    suppressCommandMessages: true,
    dartVersionOverride: safeDartSdk,
    stdout: stdout,
    stderr: stderr,
  );

  if (wetRun) return;

  _displayProjectInfo(logger: logger, actualProjectId: projectId);

  logger.terminalCommand(
    'scloud help deployment',
    message: 'To see how to view deployment statuses, run this command:',
    newParagraph: true,
  );
}