getAllLockInfo function

List<LockInfo> getAllLockInfo(
  1. String locksDir
)

Get information about all version locks for diagnostics.

Implementation

List<LockInfo> getAllLockInfo(String locksDir) {
  final lockInfos = <LockInfo>[];
  try {
    final dir = Directory(locksDir);
    if (!dir.existsSync()) return lockInfos;

    final lockFiles = dir.listSync().whereType<File>().where(
      (f) => f.path.endsWith('.lock'),
    );

    for (final lockFile in lockFiles) {
      final content = readLockContent(lockFile.path);
      if (content != null) {
        lockInfos.add(
          LockInfo(
            version: content.version,
            pid: content.pid,
            isProcessRunning: isProcessRunning(content.pid),
            execPath: content.execPath,
            acquiredAt: DateTime.fromMillisecondsSinceEpoch(content.acquiredAt),
            lockFilePath: lockFile.path,
          ),
        );
      }
    }
  } catch (_) {}
  return lockInfos;
}