diff options
| author | s-ol <s+removethis@s-ol.nu> | 2023-10-29 22:45:14 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2023-10-29 22:45:14 +0000 |
| commit | 814dfea28471daa3f29f7a66f2d85f611e12bc78 (patch) | |
| tree | 06ec6242614effa3158746234c19bced175e3950 /src/config.zig | |
| parent | update for zig 0.11.0 (diff) | |
| download | glsl-view-814dfea28471daa3f29f7a66f2d85f611e12bc78.tar.gz glsl-view-814dfea28471daa3f29f7a66f2d85f611e12bc78.zip | |
load shaders relative to config file / project_root
Diffstat (limited to 'src/config.zig')
| -rw-r--r-- | src/config.zig | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/config.zig b/src/config.zig index 166fdf4..27d0b44 100644 --- a/src/config.zig +++ b/src/config.zig @@ -50,6 +50,7 @@ pub const Config = struct { outputs: []const OutputConfig, fragment: []const u8, parameters: []const ParameterConfig, + project_root: fs.Dir, osc: OSCConfig, pub fn parse(allocator: *const std.mem.Allocator, filename: []const u8) !Config { @@ -62,12 +63,14 @@ pub const Config = struct { const len: usize = try file.read(buffer[0..]); c.yaml_parser_set_input_string(&parser, buffer[0..], len); + const dirname = fs.path.dirname(filename) orelse ""; var config: Config = .{ .width = 1920, .height = 1080, .outputs = ([_]OutputConfig{defaultOutput})[0..], .fragment = "", .parameters = ([0]ParameterConfig{})[0..], + .project_root = try fs.cwd().openDir(dirname, .{}), .osc = .{ .URL = "osc.udp://:9000" }, }; @@ -97,6 +100,8 @@ pub const Config = struct { config.outputs = try parseOutputs(&parser, allocator); } else if (std.mem.eql(u8, key, "parameters")) { config.parameters = try parseParameters(&parser, allocator); + } else if (std.mem.eql(u8, key, "project_root")) { + config.project_root = try fs.cwd().openDir(try parseString(&parser, allocator), .{}); } else if (std.mem.eql(u8, key, "osc")) { config.osc = try parseOSC(&parser, allocator); } else { |
