synchronize static method
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";
}