commit 84afd1768c94adc771cf9be15fbc5a19e76c65ae
parent ba1a6566f871342e3f1f43076b0763bbe6643e1e
Author: brookjeynes <me@brookjeynes.dev>
Date: Sun, 17 May 2026 16:25:52 +1000
refactor: simplify config reading logic
Signed-off-by: brookjeynes <me@brookjeynes.dev>
Diffstat:
2 files changed, 29 insertions(+), 31 deletions(-)
diff --git a/build.zig b/build.zig
@@ -7,8 +7,16 @@ const release_targets: []const std.Target.Query = &.{
.{ .cpu_arch = .x86_64, .os_tag = .macos },
};
-fn createExe(b: *std.Build, exe_name: []const u8, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) !*std.Build.Step.Compile {
- const ziggy = b.dependency("ziggy", .{ .target = target, .optimize = optimize }).module("ziggy");
+fn createExe(
+ b: *std.Build,
+ exe_name: []const u8,
+ target: std.Build.ResolvedTarget,
+ optimize: std.builtin.OptimizeMode,
+) !*std.Build.Step.Compile {
+ const ziggy = b.dependency("ziggy", .{
+ .target = target,
+ .optimize = optimize,
+ }).module("ziggy");
const exe = b.addExecutable(.{
.name = exe_name,
@@ -28,7 +36,11 @@ pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
- const build_all = b.option(bool, "all-targets", "Build all targets in ReleaseSafe mode.") orelse false;
+ const build_all = b.option(
+ bool,
+ "all-targets",
+ "Build all targets in ReleaseSafe mode.",
+ ) orelse false;
if (build_all) {
try build_targets(b);
return;
diff --git a/src/main.zig b/src/main.zig
@@ -58,43 +58,29 @@ pub fn main(init: std.process.Init) !void {
// Read config
const config = lbl: {
var config_dir = dir: {
- if (try environment.getXdgConfigHomeDir(io, init.environ_map)) |home_dir| {
- defer {
- var dir = home_dir;
- dir.close(io);
+ var dir_env: struct { dir: std.Io.Dir, name: []const u8 } = env: {
+ if (try environment.getXdgConfigHomeDir(io, init.environ_map)) |home_dir| {
+ break :env .{ .dir = home_dir, .name = XDG_CONFIG_HOME_DIR_NAME };
}
- if (!environment.dirExists(home_dir, io, XDG_CONFIG_HOME_DIR_NAME)) {
- break :lbl default_config;
+ if (try environment.getHomeDir(io, init.environ_map)) |home_dir| {
+ break :env .{ .dir = home_dir, .name = HOME_DIR_NAME };
}
- const dir = try home_dir.openDir(io, XDG_CONFIG_HOME_DIR_NAME, .{ .iterate = true });
- if (!environment.fileExists(dir, io, CONFIG_NAME)) {
- break :lbl default_config;
- }
+ break :lbl default_config;
+ };
+ defer dir_env.dir.close(io);
- break :dir dir;
+ if (!environment.dirExists(dir_env.dir, io, dir_env.name)) {
+ break :lbl default_config;
}
- if (try environment.getHomeDir(io, init.environ_map)) |home_dir| {
- defer {
- var dir = home_dir;
- dir.close(io);
- }
-
- if (!environment.dirExists(home_dir, io, HOME_DIR_NAME)) {
- break :lbl default_config;
- }
-
- const dir = try home_dir.openDir(io, HOME_DIR_NAME, .{ .iterate = true });
- if (!environment.fileExists(dir, io, CONFIG_NAME)) {
- break :lbl default_config;
- }
-
- break :dir dir;
+ const dir = try dir_env.dir.openDir(io, dir_env.name, .{ .iterate = true });
+ if (!environment.fileExists(dir, io, CONFIG_NAME)) {
+ break :lbl default_config;
}
- break :lbl default_config;
+ break :dir dir;
};
const contents = config_dir.readFileAlloc(io, CONFIG_NAME, allocator, .limited(4096)) catch break :lbl default_config;