synchronize static method

String synchronize(
  1. String source, {
  2. required String flavor,
  3. required String projectId,
})

Adds or updates one flavor alias without discarding other CLI settings.

Implementation

static String synchronize(
  String source, {
  required String flavor,
  required String projectId,
}) {
  if (flavor != "dev" && flavor != "prod") {
    throw ArgumentError.value(
      flavor,
      "flavor",
      "Flavor must be dev or prod.",
    );
  }
  if (projectId.trim().isEmpty) {
    throw ArgumentError.value(projectId, "projectId", "Must not be empty.");
  }
  final root = _decode(source);
  final projects = root["projects"];
  if (projects != null && projects is! Map) {
    throw const FormatException("Firebase projects must be a JSON object.");
  }
  final updatedProjects = <String, dynamic>{
    if (projects is Map)
      ...projects.map((key, value) => MapEntry(key.toString(), value)),
    flavor: projectId.trim(),
  };
  root["projects"] = updatedProjects;
  return "${const JsonEncoder.withIndent("  ").convert(root)}\n";
}