Skip to documentation
SLOP

tiny.smg.command.exports

Reference tiny.smg command exports

Defined in command.

API (1)

Actions

Public operations.

No direct callersNo direct callscommandexports
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallsNo direct callersprivate; no linktools.smg.src.command.exportsisFormatprivate; no linktools.smg.src.command.exportsvalidatecommand.exportsrun
Static calls · unresolved targets: 0 · external targets: 11.

Source: tools/smg/src/command/exports.zig

zig
const std = @import("std");const smg = @import("../root.zig");const exports = smg.exports;const text = smg.text;const cli_options = smg.cli.options;const cli_output = smg.cli.output;const cli_session = smg.command.session;const cli_validation = smg.cli.validation;pub fn run(allocator: std.mem.Allocator, phases: std.mem.Allocator, args: []const []const u8, limits: smg.Limits, boundary: cli_session.PhaseBoundary) !u8 {    const fmt = args[0];    if (!isFormat(fmt)) {        try cli_output.writeClickUsageError(allocator, "export", "[OPTIONS] COMMAND [ARGS]...", try std.fmt.allocPrint(allocator, "No such command '{s}'.", .{fmt}));        return 2;    }    const rest = args[1..];    if (try validate(allocator, fmt, rest)) return 2;    const loaded = try cli_session.loadRead(allocator, phases, limits, boundary);    defer boundary.beginTeardown();    const graph = loaded[1];    if (std.mem.eql(u8, fmt, "json")) return try cli_output.writeOut(try exports.toJson(allocator, graph, cli_options.hasFlag(rest, "--indent")));    if (std.mem.eql(u8, fmt, "mermaid")) return try cli_output.writeOut(try exports.toMermaid(allocator, graph));    if (std.mem.eql(u8, fmt, "dot")) return try cli_output.writeOut(try exports.toDot(allocator, graph));    if (std.mem.eql(u8, fmt, "text")) return try cli_output.writeOut(try exports.toText(allocator, graph));    return try cli_output.writeOut(try exports.toDsm(allocator, graph, cli_options.flagValue(rest, "--level") orelse "module"));}fn validate(allocator: std.mem.Allocator, fmt: []const u8, args: []const []const u8) !bool {    if (std.mem.eql(u8, fmt, "json")) return try validateJson(allocator, args);    if (std.mem.eql(u8, fmt, "dsm")) return try validateDsm(allocator, args);    return try validatePlain(allocator, fmt, args);}fn validateJson(allocator: std.mem.Allocator, args: []const []const u8) !bool {    if (try cli_validation.rejectUnexpectedOptionsPlain(allocator, "export json", "[OPTIONS]", args, &.{ "--indent", "--no-indent" })) return true;    return try rejectPositionals(allocator, "export json", args);}fn validateDsm(allocator: std.mem.Allocator, args: []const []const u8) !bool {    if (try cli_validation.rejectMissingOptionValues(allocator, args, &.{"--level"})) return true;    if (try cli_validation.rejectUnexpectedOptionsPlain(allocator, "export dsm", "[OPTIONS]", args, &.{"--level"})) return true;    if (try rejectPositionals(allocator, "export dsm", args)) return true;    const level = cli_options.flagValue(args, "--level") orelse return false;    if (isDsmLevel(level)) return false;    try cli_output.writeClickUsageError(allocator, "export dsm", "[OPTIONS]", try std.fmt.allocPrint(allocator, "Invalid value for '--level': '{s}' is not one of 'module', 'class', 'all'.", .{level}));    return true;}fn validatePlain(allocator: std.mem.Allocator, fmt: []const u8, args: []const []const u8) !bool {    const command = try std.fmt.allocPrint(allocator, "export {s}", .{fmt});    if (try cli_validation.rejectUnexpectedOptionsPlain(allocator, command, "[OPTIONS]", args, &.{})) return true;    return try rejectPositionals(allocator, command, args);}fn rejectPositionals(allocator: std.mem.Allocator, command: []const u8, args: []const []const u8) !bool {    const pos = try cli_options.positional(allocator, args);    if (pos.len == 0) return false;    try cli_output.writeClickUsageError(allocator, command, "[OPTIONS]", try cli_validation.unexpectedArgumentMessage(allocator, pos));    return true;}fn isFormat(fmt: []const u8) bool {    return text.list.containsString(&.{ "json", "mermaid", "dot", "text", "dsm" }, fmt);}fn isDsmLevel(level: []const u8) bool {    return text.list.containsString(&.{ "module", "class", "all" }, level);}test "export command choices match help surface" {    try std.testing.expect(isFormat("json"));    try std.testing.expect(isFormat("mermaid"));    try std.testing.expect(isFormat("dot"));    try std.testing.expect(isFormat("text"));    try std.testing.expect(isFormat("dsm"));    try std.testing.expect(!isFormat("csv"));}test "export dsm levels are explicit" {    try std.testing.expect(isDsmLevel("module"));    try std.testing.expect(isDsmLevel("class"));    try std.testing.expect(isDsmLevel("all"));    try std.testing.expect(!isDsmLevel("package"));}

Source: tools/smg/src/command/root.zig:12

zig
pub const exports = @import("exports.zig");

Audit

Definitions2
Public names2
Members0
Version26.7.0
Revisiondaab053ee433