Use comptime for fully declarative LV2 and Custom commands #14

Merged
luna merged 69 commits from declarative-commands into master 2020-06-02 21:37:47 +00:00
1 changed files with 12 additions and 7 deletions
Showing only changes of commit a2ea8fb53e - Show all commits

View File

@ -26,10 +26,13 @@ pub const Runner = struct {
/// If the runner is in REPL mode
repl: bool = false,
args: [][]u8,
pub fn init(allocator: *std.mem.Allocator, repl: bool) Runner {
return Runner{
.allocator = allocator,
.repl = repl,
.args = std.process.argsAlloc(allocator) catch unreachable,
};
}
@ -41,7 +44,11 @@ pub const Runner = struct {
pub fn clone(self: *Runner) !Runner {
var cloned_image = if (self.image) |image| try image.clone() else null;
return Runner{ .allocator = self.allocator, .image = cloned_image };
return Runner{
.allocator = self.allocator,
.image = cloned_image,
.args = self.args,
};
}
fn resolveArg(self: *Runner, load_path: []const u8) ![]const u8 {
@ -57,14 +64,12 @@ pub const Runner = struct {
// ':0' should ALWAYS point to the image.
if (self.repl) index += 3 else index += 2;
var args = try std.process.argsAlloc(self.allocator);
defer std.process.argsFree(self.allocator, args);
std.debug.warn("ARGS!! {} \n", .{args.len});
for (args) |arg, idx| {
std.debug.warn("ARGS!! {} \n", .{self.args.len});
for (self.args) |arg, idx| {
std.debug.warn("arg{} = {}\n", .{ idx, arg });
}
std.debug.warn("fetch arg idx={}, val={}\n", .{ index, args[index] });
return args[index];
std.debug.warn("fetch arg idx={}, val={}\n", .{ index, self.args[index] });
return self.args[index];
} else {
return load_path;
}