about summary refs log tree commit diff
path: root/src/exe.zig
diff options
context:
space:
mode:
authorRobert Günzler <r@gnzler.io>2025-07-25 19:20:52 +0200
committerRobert Günzler <r@gnzler.io>2025-07-25 19:31:19 +0200
commit69ea02e682fa63910cc8316e8b55a3aa60643e83 (patch)
tree431781a1c94c0cd44205b74da8f96bcf63620bbb /src/exe.zig
parentc36b9cb651dccec5defc0826b3c43e864fd00ddf (diff)
downloadsite-69ea02e682fa63910cc8316e8b55a3aa60643e83.tar.gz
refactor gen binary
- make indexer also pick up markdown files
- prepare for hosting more markdown functionality

Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
-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;
+}