performLaunch static method

Future<void> performLaunch(
  1. Client cloudApiClient,
  2. FileUploaderFactory fileUploaderFactory,
  3. CommandLogger logger,
  4. ProjectLaunch projectSetup,
)

Implementation

static Future<void> performLaunch(
  final Client cloudApiClient,
  final FileUploaderFactory fileUploaderFactory,
  final CommandLogger logger,
  final ProjectLaunch projectSetup,
) async {
  logger.info('Launching project...');

  final projectId = projectSetup.projectId!;
  final projectDir = projectSetup.projectDir!;
  final enableDb = projectSetup.enableDb!;
  final performDeploy = projectSetup.performDeploy!;

  await ProjectCommands.createProject(
    cloudApiClient,
    logger: logger,
    projectId: projectId,
    enableDb: enableDb,
    projectDir: projectDir,
    configFilePath: p.join(
      projectDir,
      ProjectConfigFileConstants.defaultFileName,
    ),
  );

  if (!performDeploy) {
    logger.terminalCommand(
      'scloud deploy -d $projectDir $projectId',
      message: 'Run this command to deploy the project to the cloud:',
    );
    return;
  }

  await Deploy.deploy(
    cloudApiClient,
    fileUploaderFactory,
    logger: logger,
    projectId: projectId,
    projectDir: projectDir,
    concurrency: 5,
    dryRun: false,
  );

  logger.info(' '); // blank line

  String? attemptId;
  do {
    try {
      attemptId = await StatusFeature.getDeployAttemptId(
        cloudApiClient,
        cloudCapsuleId: projectId,
        attemptNumber: 0,
      );
    } on NotFoundException catch (_) {
      logger.debug('Waiting for deployment status...');
      await Future.delayed(const Duration(seconds: 5));
    }
  } while (attemptId == null);

  await StatusCommands.showDeploymentStatus(
    cloudApiClient,
    logger: logger,
    cloudCapsuleId: projectId,
    attemptId: attemptId,
  );
  logger.terminalCommand(
    'scloud status deploy -p $projectId',
    message: 'Run this command to see the current deployment status:',
  );
}