fix: create ~/.cache and ~/.config if they do not exist

This commit is contained in:
CJ van den Berg 2024-05-17 15:19:57 +02:00
parent 55259b3ba1
commit d9087f9884

View file

@ -354,10 +354,16 @@ fn get_app_config_dir(appname: []const u8) ![]const u8 {
dir
else if (std.posix.getenv("XDG_CONFIG_HOME")) |xdg|
try std.fmt.bufPrint(&local.config_dir_buffer, "{s}/{s}", .{ xdg, appname })
else if (std.posix.getenv("HOME")) |home|
try std.fmt.bufPrint(&local.config_dir_buffer, "{s}/.config/{s}", .{ home, appname })
else
else if (std.posix.getenv("HOME")) |home| ret: {
const dir = try std.fmt.bufPrint(&local.config_dir_buffer, "{s}/.config", .{home});
std.fs.makeDirAbsolute(dir) catch |e| switch (e) {
error.PathAlreadyExists => {},
else => return e,
};
break :ret try std.fmt.bufPrint(&local.config_dir_buffer, "{s}/.config/{s}", .{ home, appname });
} else {
return error.AppConfigDirUnavailable;
};
local.config_dir = config_dir;
std.fs.makeDirAbsolute(config_dir) catch |e| switch (e) {
error.PathAlreadyExists => {},
@ -379,10 +385,16 @@ fn get_app_cache_dir(appname: []const u8) ![]const u8 {
dir
else if (std.posix.getenv("XDG_CACHE_HOME")) |xdg|
try std.fmt.bufPrint(&local.cache_dir_buffer, "{s}/{s}", .{ xdg, appname })
else if (std.posix.getenv("HOME")) |home|
try std.fmt.bufPrint(&local.cache_dir_buffer, "{s}/.cache/{s}", .{ home, appname })
else
else if (std.posix.getenv("HOME")) |home| ret: {
const dir = try std.fmt.bufPrint(&local.cache_dir_buffer, "{s}/.cache", .{home});
std.fs.makeDirAbsolute(dir) catch |e| switch (e) {
error.PathAlreadyExists => {},
else => return e,
};
break :ret try std.fmt.bufPrint(&local.cache_dir_buffer, "{s}/.cache/{s}", .{ home, appname });
} else {
return error.AppCacheDirUnavailable;
};
local.cache_dir = cache_dir;
std.fs.makeDirAbsolute(cache_dir) catch |e| switch (e) {
error.PathAlreadyExists => {},