//! parcel-proto: runs one mailbox-view prototype on the Wayland display. //! //! parcel-proto lists them //! parcel-proto NAME runs one const std = @import("std"); const siv = @import("siv"); const all = @import("all.zig"); const Settings = @import("Settings.zig"); const Io = std.Io; pub fn main(init: std.process.Init) !void { const args = try init.minimal.args.toSlice(init.arena.allocator()); const p = if (args.len == 2) all.find(args[1]) else null; if (p == null) return list(init.io); const app = try siv.appCreate(.{ .name = "Parcel prototypes", .app_id = "dev.rockorager.parcel.proto" }); defer siv.appDestroy(app); const settings = Settings.open(init.io, init.environ_map); defer if (settings) |s| s.close(); const run = try all.Run.init(init.gpa, app, p.?, settings, 1200, 760); defer run.deinit(init.gpa); try siv.appRun(app); } fn list(io: Io) !void { var buf: [4096]u8 = undefined; var writer: Io.File.Writer = .init(.stdout(), io, &buf); const w = &writer.interface; try w.writeAll("usage: parcel-proto NAME\n\n"); for (all.prototypes) |p| try w.print(" {s:<10} {s}: {s}\n", .{ p.name, p.title, p.idea }); try w.flush(); } test { _ = all; _ = @import("Store.zig"); _ = @import("sample.zig"); _ = @import("Desk.zig"); }