From d3d0f4d75095620058588498ba9d1a82bf21f009 Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sun, 2 Jan 2022 09:23:06 +0200 Subject: Support ~/paths --- src/files.zig | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/files.zig') diff --git a/src/files.zig b/src/files.zig index ed9e628..b857ba5 100644 --- a/src/files.zig +++ b/src/files.zig @@ -9,8 +9,24 @@ pub fn resolvePath(allocator: Allocator, name: []const u8) ![]u8 { } else if (name[0] == std.fs.path.sep) { // Already is an absolute path return allocator.dupe(u8, name); + } else if (name[0] == '~') { + if (name.len == 1) { + return error.FileNotFound; + } else if (name[1] == std.fs.path.sep) { + var env_map = try std.process.getEnvMap(allocator); + defer env_map.deinit(); + + if (env_map.get("HOME")) |home| { + return try std.fs.path.join(allocator, &.{ home, name[2..] }); + } else { + std.log.err("No $HOME environment variable available!", .{}); + return error.FileNotFound; + } + } else { + // TODO: Currently only doing ~/paths no ~user/paths + return error.FileNotFound; + } } else { - // TODO: if (name[0] == '~') const cwd = try std.process.getCwdAlloc(allocator); defer allocator.free(cwd); -- cgit v1.2.3