tiny.smg.cli.metadata
Defined in cli.
API (1)
Actions
Public operations.
Source
Source: tools/smg/src/cli/metadata.zig
zig
const std = @import("std");const smg = @import("../root.zig");const model = smg.model;const text = smg.text;pub fn pairs(allocator: std.mem.Allocator, args: []const []const u8, default_source: []const u8) ![]const model.Pair { var out: std.ArrayList(model.Pair) = .empty; var i: usize = 0; while (i + 1 < args.len) : (i += 1) { if (std.mem.eql(u8, args[i], "--meta")) { const kv = try text.keyValue(allocator, args[i + 1]); try model.upsertPair(allocator, &out, .{ .key = kv.key, .value = kv.value }); i += 1; } } if (default_source.len != 0 and model.pairValue(out.items, "source") == null) { try out.append(allocator, .{ .key = try allocator.dupe(u8, "source"), .value = try allocator.dupe(u8, default_source) }); } return try out.toOwnedSlice(allocator);}test "metadata pairs match python default and replacement semantics" { var arena = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena.deinit(); const allocator = arena.allocator(); const owner_args = [_][]const u8{ "--meta", "owner=core" }; const owner_pairs = try pairs(allocator, &owner_args, "manual"); try std.testing.expectEqual(@as(usize, 2), owner_pairs.len); try std.testing.expectEqualStrings("owner", owner_pairs[0].key); try std.testing.expectEqualStrings("core", owner_pairs[0].value); try std.testing.expectEqualStrings("source", owner_pairs[1].key); try std.testing.expectEqualStrings("manual", owner_pairs[1].value); const source_args = [_][]const u8{ "--meta", "source=test", "--meta", "source=scan" }; const source_pairs = try pairs(allocator, &source_args, "manual"); try std.testing.expectEqual(@as(usize, 1), source_pairs.len); try std.testing.expectEqualStrings("source", source_pairs[0].key); try std.testing.expectEqualStrings("scan", source_pairs[0].value);}Source: tools/smg/src/cli/root.zig:5
zig
pub const metadata = @import("metadata.zig");Audit
| Definitions | 2 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |