inPath method

(bool, String) inPath()

Check ~/bin or ~/.local/bin in PATH. Return a tuple (exist, path).

Implementation

(bool, String) inPath() {
  final currentPath = environ['PATH'] ?? '';
  final pathDelimiter = isWindows ? ';' : ':';
  final dirs = currentPath.split(pathDelimiter);

  final binDir = Directory(p.join(homeDir, 'bin'));
  final localBinDir = Directory(p.join(homeDir, '.local', 'bin'));

  if (!binDir.existsSync()) binDir.createSync(recursive: true);
  if (!localBinDir.existsSync()) localBinDir.createSync(recursive: true);

  final binPath = binDir.path;
  final localBinPath = localBinDir.path;
  for (final dir in dirs) {
    if (dir.isEmpty) continue; // Skip empty path entries
    if (p.equals(dir, localBinPath)) return (true, localBinPath);
    if (p.equals(dir, binPath)) return (true, binPath);
  }
  return (false, localBinPath);
}