about summary refs log tree commit diff
path: root/src/exe.zig
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/exe.zig20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/exe.zig b/src/exe.zig
index 7c7e026..e0cb7ef 100644
--- a/src/exe.zig
+++ b/src/exe.zig
@@ -107,3 +107,23 @@ pub fn captureStdout(ctx: *Context, argv: []const []const u8, env_map: ?*std.pro
     const result = try p.wait();
     _ = result;
 }
+
+pub fn shell(ctx: *Context, command: []const u8) !void {
+    const label = try std.fmt.allocPrint(ctx.allocator(), "running {s}", .{command});
+    defer ctx.allocator().free(label);
+
+    ctx.progress_start(label);
+    defer ctx.progress_end();
+
+    var p = std.process.Child.init(&.{
+        "sh",
+        "-c",
+        command,
+    }, std.heap.page_allocator);
+
+    p.progress_node = ctx.progress_nodes.getLast();
+
+    try p.spawn();
+    const result = try p.wait();
+    _ = result;
+}