launch static method
Future<void>
launch(
- Client cloudApiClient,
- FileUploaderFactory fileUploaderFactory, {
- required CommandLogger logger,
- required String? specifiedProjectDir,
- required String? foundProjectDir,
- required String? newProjectId,
- required String? existingProjectId,
- required bool? enableDb,
- 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);
final configFilePath = projectSetup.configFilePath;
if (configFilePath == null) {
throw StateError('ConfigFilePath must be set.');
}
await suggestFlutterBuildPreDeployHook(
logger,
projectSetup,
configFilePath,
);
await confirmSetupAndContinue(logger, projectSetup);
await performLaunch(
cloudApiClient,
fileUploaderFactory,
logger,
projectSetup,
);
}