firebase_multi_env_manager 2.0.0 copy "firebase_multi_env_manager: ^2.0.0" to clipboard
firebase_multi_env_manager: ^2.0.0 copied to clipboard

A production-ready Dart CLI to manage multiple Firebase environments (dev, staging, prod) for Flutter projects.

Firebase Multi-Env Manager πŸš€ #

A production-ready Dart CLI tool designed to streamline Firebase environment management for Flutter projects. Safely switch between dev, staging, and prod environments with automatic configuration updates, backups, and validation.

✨ Features #

  • Platform-Specific Handlers:
    • Android: Automatically updates google-services.json, applicationId in build.gradle, and android:label in AndroidManifest.xml.
    • iOS: Updates GoogleService-Info.plist, PRODUCT_BUNDLE_IDENTIFIER in project.pbxproj, and CFBundleDisplayName in Info.plist.
  • Safety First:
    • Automatic Backups: Creates a timestamped backup of sensitive files before every switch.
    • Rollback System: Quickly restore previous configurations if a switch fails.
    • Validation: Checks for project integrity and missing config files before making changes.
  • Advanced CLI:
    • Interactive Mode: Select environments from a menu.
    • CI/CD Ready: Supports non-interactive flags and proper exit codes for automation.
    • Diffing: Compare environment configurations directly from the terminal.
  • Modular & Extensible: Clean architecture with separate layers for services, handlers, and CLI logic.

πŸš€ Getting Started #

Prerequisites #

  • Dart SDK (^3.10.0)
  • A Flutter project with standard android/ and ios/ structures.

Configuration #

Add the firebase_multi_env section to your pubspec.yaml:

firebase_multi_env:
  default: dev
  environments:
    dev:
      android_config: firebase/dev/google-services.json
      ios_config: firebase/dev/GoogleService-Info.plist
      android_application_id: com.example.app.dev
      ios_bundle_id: com.example.app.dev
      app_name: MyApp Dev
    prod:
      android_config: firebase/prod/google-services.json
      ios_config: firebase/prod/GoogleService-Info.plist
      android_application_id: com.example.app
      ios_bundle_id: com.example.app
      app_name: MyApp

πŸ›  Usage #

Run the tool using dart bin/firebase_multi_env_manager.dart or activate it globally.

Common Commands #

  • List environments:

    firebase_multi_env --list
    
  • Switch environment:

    firebase_multi_env --env dev
    
  • Compare configurations:

    firebase_multi_env --diff dev,prod
    
  • Rollback to last backup:

    firebase_multi_env --rollback
    
  • CI Mode:

    firebase_multi_env --env prod --ci
    

πŸ“‚ Project Structure #

lib/
β”œβ”€β”€ cli/          # Argument parsing and user interaction
β”œβ”€β”€ core/         # Shared constants, logger, and exceptions
β”œβ”€β”€ handlers/     # Platform-specific (Android/iOS) modification logic
β”œβ”€β”€ services/     # Core business logic (Backup, Config, Validator)
└── env_switcher.dart  # Main orchestrator

πŸ§ͺ Testing #

Run the full test suite with:

dart test -j 1

πŸ“„ License #

This project is licensed under the MIT License - see the LICENSE file for details.

0
likes
50
points
26
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A production-ready Dart CLI to manage multiple Firebase environments (dev, staging, prod) for Flutter projects.

Repository (GitHub)
View/report issues

Topics

#firebase #flutter #cli #devops #environment-management

License

MIT (license)

Dependencies

ansicolor, args, path, yaml

More

Packages that depend on firebase_multi_env_manager