environment.zig (1352B)
1 const std = @import("std"); 2 3 pub fn getHomeDir(io: std.Io, env_map: *std.process.Environ.Map) !?std.Io.Dir { 4 return try std.Io.Dir.openDirAbsolute(io, env_map.get("HOME") orelse { 5 return null; 6 }, .{ .iterate = true }); 7 } 8 9 pub fn getXdgConfigHomeDir(io: std.Io, env_map: *std.process.Environ.Map) !?std.Io.Dir { 10 return try std.Io.Dir.openDirAbsolute(io, env_map.get("XDG_CONFIG_HOME") orelse { 11 return null; 12 }, .{ .iterate = true }); 13 } 14 15 pub fn fileExists(dir: std.Io.Dir, io: std.Io, path: []const u8) bool { 16 const result = blk: { 17 _ = dir.openFile(io, path, .{}) catch |err| { 18 switch (err) { 19 error.FileNotFound => break :blk false, 20 else => { 21 std.log.info("{}", .{err}); 22 break :blk true; 23 }, 24 } 25 }; 26 break :blk true; 27 }; 28 return result; 29 } 30 31 pub fn dirExists(dir: std.Io.Dir, io: std.Io, path: []const u8) bool { 32 const result = blk: { 33 _ = dir.openDir(io, path, .{}) catch |err| { 34 switch (err) { 35 error.FileNotFound => break :blk false, 36 else => { 37 std.log.info("{}", .{err}); 38 break :blk true; 39 }, 40 } 41 }; 42 break :blk true; 43 }; 44 return result; 45 }