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 PlanProfile? plan,
  9. required bool? enableDb,
  10. required bool? performDeploy,
  11. String? dartVersionOverride,
})

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 PlanProfile? plan,
  required final bool? enableDb,
  required final bool? performDeploy,
  final String? dartVersionOverride,
}) async {
  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,
    plan: plan,
    enableDb: enableDb,
    preexistingProject: existingProjectId != null,
    performDeploy: performDeploy,
  );

  await selectProjectDir(logger, projectSetup, foundProjectDir);

  await selectProjectId(cloudApiClient, logger, projectSetup);

  if (projectSetup.preexistingProject != true) {
    await selectPlan(cloudApiClient, logger, projectSetup);

    await selectEnableDb(logger, projectSetup);
  }

  await selectPerformDeploy(logger, projectSetup);

  final configFilePath = projectSetup.configFilePath;
  if (configFilePath == null) {
    throw StateError('ConfigFilePath must be set.');
  }

  await suggestCodeGenerationPreDeployHook(
    logger,
    projectSetup,
    configFilePath,
  );

  await suggestFlutterBuildPreDeployHook(
    logger,
    projectSetup,
    configFilePath,
  );

  await confirmSetupAndContinue(logger, projectSetup);

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