performLaunch static method
Future<void>
performLaunch(
- Client cloudApiClient,
- FileUploaderFactory fileUploaderFactory,
- CommandLogger logger,
- 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 configFilePath = projectSetup.configFilePath;
final performDeploy = projectSetup.performDeploy;
if (projectId == null) {
throw StateError('ProjectId must be set.');
}
if (projectDir == null) {
throw StateError('ProjectDir must be set.');
}
if (configFilePath == null) {
throw StateError('ConfigFilePath must be set.');
}
if (performDeploy == null) {
throw StateError('PerformDeploy must be set.');
}
if (projectSetup.preexistingProject != true) {
final enableDb = projectSetup.enableDb!;
await ProjectCommands.createProject(
cloudApiClient,
logger: logger,
projectId: projectId,
enableDb: enableDb,
projectDir: projectDir,
configFilePath: configFilePath,
skipConfirmation: true,
);
}
await logger.progress(
'Writing cloud project configuration files.',
() async {
ProjectFilesWriter.writeFiles(
projectId: projectId,
preDeployScripts: projectSetup.suggestedPreDeployScripts,
configFilePath: configFilePath,
projectDirectory: projectDir,
);
return true;
},
);
if (!performDeploy) {
logger.terminalCommand(
'scloud deploy',
message: 'Run this command to deploy the project to the cloud:',
);
return;
}
await Deploy.deploy(
cloudApiClient,
fileUploaderFactory,
logger: logger,
projectId: projectId,
projectDir: projectDir,
projectConfigFilePath: configFilePath,
concurrency: 5,
dryRun: false,
showFiles: false,
);
logger.info(' '); // blank line
final attemptId = await _getDeployAttemptId(
cloudApiClient,
logger,
projectId,
);
await StatusCommands.showDeploymentStatus(
cloudApiClient,
logger: logger,
cloudCapsuleId: projectId,
attemptId: attemptId,
);
const tenantHost = 'serverpod.space';
logger.info(
'When the server has started, you can access it at:\n'
' Web: https://$projectId.$tenantHost/\n'
' API: https://$projectId.api.$tenantHost/\n'
' Insights: https://$projectId.insights.$tenantHost/',
newParagraph: true,
);
logger.terminalCommand(
'scloud deployment show',
message: 'View the deployment status:',
newParagraph: true,
);
}