Categories
Misc
  • Github CLI
  • SSH
  • HTTPS
Clone Repo

zzdoc

zzdoc is a 1:1 port of scdoc, designed for use in your build.zig file. It will compile scdoc syntax into roff manpages. It will do so without requiring scdoc to be installed on the host system. All scdoc tests have been ported as well, ensuring zzdoc produces consistent output.

Usage

zzdoc exposes a generic manpage builder which accepts a std.io.AnyWriter and std.io.AnyReader. This API allows zzdoc to be used with a wide variety of inputs and outputs.

const std = @import("std");
const zzdoc = @import("zzdoc");

pub fn main() !void {
    const allocator = std.testing.allocator;
    var src = std.fs.cwd().openFile("zzdoc.5.scd", .{});
    defer src.close();
    var dst = std.fs.cwd().createFile("zzdoc.5", .{});
    defer dst.close();

    try zzdoc.generate(allocator, dst.writer().any(), src.reader().any());
}

zzdoc also exposes build.zig helpers to make installation of manpages as smooth as possible.

const std = @import("std");
const zzdoc = @import("zzdoc");

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});

    // All of our *.scd files live in ./docs/
    var man_step = zzdoc.addManpageStep(b, .{
        .root_doc_dir = b.path("docs/"),
    });

    // Add an install step. This helper will install manpages to their
    // appropriate subdirectory under `.prefix/share/man`
    const install_step = man_step.addInstallStep(.{});
    b.default_step.dependOn(&install_step.step);
}

License

zzdoc is MIT licensed, the same as scdoc. Many thanks to Drew DeVault for developing scdoc.

About
an scdoc compatible manpage compiler for build.zig
Owner
Last Commit
2025-03-05
Latest Release
Latest Release Date
2025-03-05
Created
2024-05-15