about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/exe.zig20
-rw-r--r--src/main.zig6
2 files changed, 26 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;
+}
diff --git a/src/main.zig b/src/main.zig
index 9a588a9..04334f1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -174,6 +174,12 @@ const Cli = struct {
         try index(ctx);
         try exe.runPandoc(ctx);
     }
+
+    fn watchCmd(ctx: *Context) !void {
+        try exe.shell(ctx,
+            \\find ./src/inc/ -type f -print | entr -nc -dd -- rbl md gen
+        );
+    }
 };
 
 pub fn main() !void {