pathExpand function

String pathExpand(
  1. String path
)

Expands path with environment variables

Implementation

String pathExpand(String path) {
  if (path.contains('://')) {
    return path;
  }
  if (path.startsWith('~')) {
    String? home = getenv('HOME');
    if (home != null) {
      path = '$home${path.substring(1)}';
    } else {
      path = '$pathOfUserDir${path.substring(1)}';
    }
  }
  path = path.replaceAllMapped(RegExp(r'[$]([_0-9a-zA-Z]+)'), (match) {
    String varName = match.group(1)!;
    String? varValue = getenv(varName);
    return varValue ?? match.group(0)!;
  });
  path = path.replaceAllMapped(RegExp(r'[$]{([_0-9a-zA-Z]+)}'), (match) {
    String varName = match.group(1)!;
    String? varValue = getenv(varName);
    return varValue ?? match.group(0)!;
  });
  path = path.replaceAllMapped(RegExp(r'%([_0-9a-zA-Z]+)%'), (match) {
    String varName = match.group(1)!;
    String? varValue = getenv(varName);
    return varValue ?? match.group(0)!;
  });
  if (dart_io.Platform.isWindows && path.startsWith('/')) {
    final cr = CommandRunner(useUnixShell: false, encoding: dart_convert.utf8);
    try {
      //print(path);
      path = cr.runSync('cygpath -wm "$path"', noPrompt: true);
      //print(path);
    } catch (_) {}
  }
  return path_path.normalize(path_path.absolute(path)).replaceAll(r'\', '/');
}