suggestFlutterBuildPreDeployHook static method

Future<void> suggestFlutterBuildPreDeployHook(
  1. CommandLogger logger,
  2. ProjectLaunch projectSetup,
  3. String configFilePath
)

Implementation

static Future<void> suggestFlutterBuildPreDeployHook(
  final CommandLogger logger,
  final ProjectLaunch projectSetup,
  final String configFilePath,
) async {
  final projectDir = projectSetup.projectDir;
  if (projectDir == null) {
    return;
  }

  final pubspecValidator = TenantProjectPubspec.fromProjectDir(
    Directory(projectDir),
  );

  if (!pubspecValidator.hasFlutterBuildScript()) return;

  ScloudConfig? existingConfig;
  try {
    existingConfig = ScloudConfigIO.readFromFile(configFilePath);
  } catch (_) {
    logger.debug('Failed to read config file at $configFilePath');
    return;
  }

  final flutterBuildHook = 'serverpod run flutter_build';

  final existingPreDeploy = existingConfig?.scripts.preDeploy ?? [];
  if (existingPreDeploy.contains(flutterBuildHook)) return;

  final shouldAdd = await logger.confirm(
    "Detected 'flutter_build' script. Add it as a pre-deploy hook?",
    defaultValue: true,
  );

  if (!shouldAdd) return;
  projectSetup.suggestedPreDeployScripts.add(flutterBuildHook);
}