| import * as os from "os"; |
| import * as path from "path"; |
| |
| /** |
| * Expands the character `~` to the user's home directory |
| */ |
| export function expandUser(file_path: string): string { |
| if (os.platform() == "win32") { |
| return file_path; |
| } |
| |
| if (!file_path) { |
| return ""; |
| } |
| |
| if (!file_path.startsWith("~")) { |
| return file_path; |
| } |
| |
| const path_len = file_path.length; |
| if (path_len == 1) { |
| return os.homedir(); |
| } |
| |
| if (file_path.charAt(1) == path.sep) { |
| return path.join(os.homedir(), file_path.substring(1)); |
| } |
| |
| const sep_index = file_path.indexOf(path.sep); |
| const user_name_end = sep_index == -1 ? file_path.length : sep_index; |
| const user_name = file_path.substring(1, user_name_end); |
| try { |
| if (user_name == os.userInfo().username) { |
| return path.join(os.homedir(), file_path.substring(user_name_end)); |
| } |
| } catch (err) { |
| return file_path; |
| } |
| |
| return file_path; |
| } |