linkProject static method

Future<String?> linkProject(
  1. Client cloudApiClient, {
  2. required CommandLogger logger,
  3. required String projectId,
  4. required String projectDirectory,
  5. required String configFilePath,
  6. String? dartVersionOverride,
  7. List<String> preDeployScripts = const [],
  8. bool suppressCommandMessages = false,
})

Implementation

static Future<String?> linkProject(
  final Client cloudApiClient, {
  required final CommandLogger logger,
  required final String projectId,
  required final String projectDirectory,
  required final String configFilePath,
  final String? dartVersionOverride,
  final List<String> preDeployScripts = const [],
  final bool suppressCommandMessages = false,
}) async {
  var safeDartSdk = ProjectDartVersionHint.normalizeBareMajorMinorOverride(
    dartVersionOverride,
  );
  if (safeDartSdk != null) {
    ensureValidVersionConstraint(
      safeDartSdk,
      sourceDescription: '(from --dart-version flag)',
    );
  } else {
    safeDartSdk = resolveProjectDartSdkVersion(Directory(projectDirectory));
  }

  await logger.progress(
    'Writing cloud project configuration files',
    successMessage: 'Configuration files written.',
    padRight: StatusCommands.progressMessagePadLength,
    () async {
      ProjectFilesWriter.writeFiles(
        projectId: projectId,
        preDeployScripts: preDeployScripts,
        configFilePath: configFilePath,
        projectDirectory: projectDirectory,
        dartSdk: safeDartSdk,
      );
      return true;
    },
  );

  if (!suppressCommandMessages) {
    logger.success('Linked Serverpod Cloud project.', newParagraph: true);
  }

  return safeDartSdk;
}