about summary refs log tree commit diff
path: root/src/exe.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/exe.zig')
-rw-r--r--src/exe.zig39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/exe.zig b/src/exe.zig
new file mode 100644
index 0000000..ef38a67
--- /dev/null
+++ b/src/exe.zig
@@ -0,0 +1,39 @@
+const std = @import("std");
+
+const log = std.log.scoped(.exe);
+const Context = @import("main.zig").Context;
+const fs = @import("fs.zig");
+
+pub fn run_pandoc(ctx: *Context) !void {
+    ctx.progress_start("Processing markdown files");
+    defer ctx.progress_end();
+
+    for (ctx.markdown.items) |page| {
+        const targetpath = try fs.replace_extension(ctx.allocator(), page, "md");
+        defer ctx.allocator().free(targetpath);
+
+        const f = try fs.FileSwapper.createAt(ctx.allocator(), targetpath);
+        defer f.close();
+
+        try run(ctx, &.{ "notify-send", "hi", page });
+    }
+    // @ echo "<!-- Generated file, you may edit and discard $< :) -->" >$@
+    // $(PANDOC) -fmarkdown+wikilinks_title_after_pipe+autolink_bare_uris -thtml5 --lua-filter=$(PANDOC_PREPROC) --strip-comments $< >>$@
+}
+
+pub fn run(ctx: *Context, argv: []const []const u8) !void {
+    const command = try std.mem.join(ctx.allocator(), " ", argv);
+    defer ctx.allocator().free(command);
+    const label = try std.fmt.allocPrint(ctx.allocator(), "running {s}", .{command});
+    defer ctx.allocator().free(label);
+
+    ctx.progress_start(label);
+    defer ctx.progress_end();
+
+    const result = try std.process.Child.run(.{
+        .argv = argv,
+        .allocator = std.heap.page_allocator,
+        .progress_node = ctx.progress_nodes.getLast(),
+    });
+    _ = result;
+}