saveMetadata method

Future<String> saveMetadata(
  1. String projectPath,
  2. ReleaseMetadata metadata, {
  3. bool dryRun = false,
})

Persists metadata as a machine-readable JSON manifest file on disk.

Implementation

Future<String> saveMetadata(
  String projectPath,
  ReleaseMetadata metadata, {
  bool dryRun = false,
}) async {
  final dirPath = getManifestDirectory(projectPath);
  final fileName = '${metadata.versionName}_${metadata.buildNumber}.json';
  final filePath = '$dirPath/$fileName';

  if (dryRun) {
    return filePath;
  }

  final dir = Directory(dirPath);
  if (!await dir.exists()) {
    await dir.create(recursive: true);
  }

  final file = File(filePath);
  await file.writeAsString(metadata.encodeJson());

  // Also update latest manifest symlink/copy
  final latestFile = File('$dirPath/latest.json');
  await latestFile.writeAsString(metadata.encodeJson());

  return filePath;
}