From 43e563fca5aad63feab48a444a142e1c1b72ffa5 Mon Sep 17 00:00:00 2001 From: robin Date: Thu, 25 Jun 2026 13:36:08 +0200 Subject: [PATCH] main: eval with mlua using `-l` --- src/main.zig | 7 ++++++- src/mlua.zig | 16 +++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main.zig b/src/main.zig index 94c3906..4dc4f78 100644 --- a/src/main.zig +++ b/src/main.zig @@ -6,13 +6,18 @@ const Handler = maivi.Handler; const helpers = maivi.helpers; const Status = helpers.Status; +const mlua = @import("mlua.zig"); + pub fn main(init: std.process.Init) !void { const args = try init.minimal.args.toSlice(init.arena.allocator()); for (1..args.len) |i| { if (std.mem.eql(u8, args[i], "build")) maivi.build = true else if (std.mem.eql(u8, args[i], "dev")) - maivi.dev = true; + maivi.dev = true + else if (std.mem.eql(u8, args[i], "-l")) { + return mlua.main(init); + } } maivi.dev = maivi.dev or (!maivi.build and (if (init.environ_map.get("MAIVI_DEV")) |_| true else false)); diff --git a/src/mlua.zig b/src/mlua.zig index e56d9da..d521864 100644 --- a/src/mlua.zig +++ b/src/mlua.zig @@ -4,7 +4,8 @@ const maivi = @import("maivi"); const fern = @import("fern"); pub fn main(init: std.process.Init) !void { - const args = init.minimal.args; + var args: []const [*:0]const u8 = init.minimal.args.vector[1..]; + if (args.len > 0 and std.mem.eql(u8, std.mem.span(args[0]), "-l")) args = args[1..]; const config: maivi.Config = try .init(init.io, init.arena, init.environ_map); @@ -24,22 +25,19 @@ pub fn main(init: std.process.Init) !void { try maivi.lua.init(); defer maivi.lua.deinit(); - if (args.vector.len < 2) { + if (args.len < 1) { std.debug.print("USAGE: nlua0 script.lua args...\n\n", .{}); return; } try eval(maivi.lua.lua, init.arena.allocator(), args); } -pub fn eval(l: *maivi.lua.Lua, allocator: std.mem.Allocator, args: std.process.Args) !void { - l.createTable(@intCast(args.vector.len - 2), 1); +pub fn eval(l: *maivi.lua.Lua, _: std.mem.Allocator, args: []const [*:0]const u8) !void { + l.createTable(@intCast(args.len - 1), 1); - var iter = try args.iterateAllocator(allocator); - _ = iter.skip(); - var i: u32 = 0; var firstarg: [:0]const u8 = undefined; - while (iter.next()) |val| : (i += 1) { - _ = l.pushString(val); + for (args, 0..) |val, i| { + _ = l.pushString(std.mem.span(val)); if (i == 0) { firstarg = try l.toString(-1); // preserved on lua heap.. } -- 2.51.2