aboutsummaryrefslogtreecommitdiffstats
path: root/src/config.zig
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2023-10-29 22:45:14 +0000
committers-ol <s+removethis@s-ol.nu>2023-10-29 22:45:14 +0000
commit814dfea28471daa3f29f7a66f2d85f611e12bc78 (patch)
tree06ec6242614effa3158746234c19bced175e3950 /src/config.zig
parentupdate for zig 0.11.0 (diff)
downloadglsl-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.zig5
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 {