diff options
Diffstat (limited to '')
| -rw-r--r-- | src/config.zig | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/config.zig b/src/config.zig index f1410d4..795c564 100644 --- a/src/config.zig +++ b/src/config.zig @@ -5,6 +5,7 @@ const build_config = @import("build_config"); pub const OutputConfig = union(enum) { window: out.WindowOutput.Config, + stdout: out.StdoutOutput.Config, texture_share_vk: if (build_config.have_tsv) @import("tsv.zig").TSVOutput.Config else void, const default: OutputConfig = .{ .window = .default }; @@ -41,6 +42,8 @@ pub const Config = struct { _ = it.skip(); + var outputs = std.ArrayList(OutputConfig).empty; + while (it.next()) |arg| { if (std.mem.eql(u8, arg, "--width")) { config.width = try parseInt(&it, i32); @@ -48,23 +51,27 @@ pub const Config = struct { config.height = try parseInt(&it, i32); } else if (std.mem.eql(u8, arg, "--osc")) { config.osc = try parseString(&it, allocator); + } else if (std.mem.eql(u8, arg, "--window")) { + var window: OutputConfig = .{ .window = .default }; + window.window.width = config.width; + window.window.height = config.height; + try outputs.append(allocator, window); + } else if (std.mem.eql(u8, arg, "--stdout")) { + try outputs.append(allocator, .{ .stdout = .default }); } else { return error.invalidArgument; } - // @TODO: output config } - if (config.outputs.len == 0) { - const num = 1; - const outputs = try allocator.alloc(OutputConfig, num); - for (0..num) |i| { - outputs[i] = .{ .window = .default }; - outputs[i].window.width = config.width; - outputs[i].window.height = config.height; - } - config.outputs = outputs; + if (outputs.items.len == 0) { + var window: OutputConfig = .{ .window = .default }; + window.window.width = config.width; + window.window.height = config.height; + try outputs.append(allocator, window); } + config.outputs = try outputs.toOwnedSlice(allocator); + return config; } }; |
