pathExpand function
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'\', '/');
}