aboutsummaryrefslogtreecommitdiffstats
path: root/src/config.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/config.zig27
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;
}
};