handleStorageInit function

Future<void> handleStorageInit()

Ensure the default Storage bucket exists (T4).

Implementation

Future<void> handleStorageInit() async {
  final SetupConfig? config = await requireFirebaseProjectConfig();
  if (config == null) return;

  final FirebaseInitializer initializer = FirebaseInitializer(
    config.firebaseProjectId!,
  );

  info(
    'Ensuring default Storage bucket exists for ${config.firebaseProjectId}...',
  );
  final StorageInitResult result = await initializer.ensureStorageBucket();

  if (result.success) {
    if (result.created) {
      success('Default Storage bucket created: gs://${result.bucketName}');
    } else {
      success(
        'Default Storage bucket already exists: gs://${result.bucketName}',
      );
    }
    print('');
    if (result.needsFirebaseInit && result.getStartedUrl != null) {
      warn(
        'Visit ${result.getStartedUrl!} once and click "Get Started" to enable Firebase Storage.',
      );
    }
  } else {
    error('Failed to ensure Storage bucket: ${result.message}');
    if (result.getStartedUrl != null) {
      print('');
      UserPrompt.printList(<String>[
        SetupGuidance.linkLine(
          'Firebase Storage console',
          result.getStartedUrl!,
        ),
        'Click "Get Started" once, then re-run: oracular deploy storage-init',
      ]);
    }
  }
}