FirebaseSetupOrchestrator constructor

FirebaseSetupOrchestrator(
  1. SetupConfig config, {
  2. FirebaseService? firebase,
  3. FirebaseBillingService? billing,
  4. FirebaseInitializer? initializer,
  5. HostingSiteManager? hosting,
  6. ArtifactCleanupService? cleanup,
  7. ProcessRunner? runner,
})

Implementation

FirebaseSetupOrchestrator(
  this.config, {
  FirebaseService? firebase,
  FirebaseBillingService? billing,
  FirebaseInitializer? initializer,
  HostingSiteManager? hosting,
  ArtifactCleanupService? cleanup,
  ProcessRunner? runner,
}) : firebase = firebase ?? FirebaseService(config, runner: runner),
     billing =
         billing ??
         FirebaseBillingService(
           config.firebaseProjectId ?? '',
           runner: runner,
         ),
     initializer =
         initializer ??
         FirebaseInitializer(config.firebaseProjectId ?? '', runner: runner),
     // ─── Hosting wiring ────────────────────────────────────────────────
     // Pass `firebase.authEnvironment` so HostingSiteManager runs every
     // `firebase` call with the same `GOOGLE_APPLICATION_CREDENTIALS`
     // Oracular uses elsewhere. Without this, `firebase
     // hosting:sites:create` inherits only the parent shell's env and
     // falls back to firebase-tools' stored login — which routinely
     // fails with "Failed to authenticate, have you run firebase
     // login?" the moment the user has logged out (or never logged in).
     hosting =
         hosting ??
         HostingSiteManager(
           config.firebaseProjectId ?? '',
           workingDirectory: config.outputDir,
           environment: (firebase ?? FirebaseService(config, runner: runner))
               .authEnvironment,
           runner: runner,
         ),
     cleanup =
         cleanup ??
         ArtifactCleanupService(
           config.firebaseProjectId ?? '',
           runner: runner,
         );