launch static method

Future<void> launch(
  1. Client cloudApiClient,
  2. FileUploaderFactory fileUploaderFactory, {
  3. required CommandLogger logger,
  4. required String? specifiedProjectDir,
  5. required String? foundProjectDir,
  6. required String? newProjectId,
  7. required String? existingProjectId,
  8. required bool? enableDb,
  9. required bool? performDeploy,
})

Implementation

static Future<void> launch(
  final Client cloudApiClient,
  final FileUploaderFactory fileUploaderFactory, {
  required final CommandLogger logger,
  required final String? specifiedProjectDir,
  required final String? foundProjectDir,
  required final String? newProjectId,
  required final String? existingProjectId,
  required final bool? enableDb,
  required final bool? performDeploy,
}) async {
  await ProjectCommands.checkPlanAvailability(
    cloudApiClient,
    logger: logger,
  );

  if (newProjectId != null && existingProjectId != null) {
    throw ArgumentError(
      'Cannot specify both newProjectId and existingProjectId.',
    );
  }

  logger.init('Launching new Serverpod Cloud project.\n');

  final projectSetup = ProjectLaunch(
    projectDir: specifiedProjectDir,
    projectId: newProjectId ?? existingProjectId,
    enableDb: enableDb,
    preexistingProject: existingProjectId != null,
    performDeploy: performDeploy,
  );

  await selectProjectDir(
    logger,
    projectSetup,
    foundProjectDir,
  );

  await selectProjectId(
    cloudApiClient,
    logger,
    projectSetup,
  );

  if (projectSetup.preexistingProject != true) {
    await selectEnableDb(
      logger,
      projectSetup,
    );
  }

  await selectPerformDeploy(
    logger,
    projectSetup,
  );

  await confirmSetupAndContinue(
    logger,
    projectSetup,
  );

  await performLaunch(
    cloudApiClient,
    fileUploaderFactory,
    logger,
    projectSetup,
  );
}