writeLockFile function

void writeLockFile(
  1. String lockFilePath,
  2. VersionLockContent content
)

Write lock content to a file atomically.

Implementation

void writeLockFile(String lockFilePath, VersionLockContent content) {
  final tempPath =
      '$lockFilePath.tmp.$pid.${DateTime.now().millisecondsSinceEpoch}';
  try {
    File(tempPath).writeAsStringSync(
      const JsonEncoder.withIndent('  ').convert(content.toJson()),
      flush: true,
    );
    File(tempPath).renameSync(lockFilePath);
  } catch (e) {
    try {
      File(tempPath).deleteSync();
    } catch (_) {}
    rethrow;
  }
}