const std = @import("std"); const ansi = @import("ansi.zig"); var output_buffer: [1024]u8 = undefined; var writer_stderr = std.fs.File.stderr().writer(&output_buffer); const stderr = &writer_stderr.interface; var input_buffer: [1024]u8 = undefined; var reader_stdin = std.fs.File.stdin().reader(&input_buffer); const stdin = &reader_stdin.interface; pub fn read( prompt: []const u8, allocator: std.mem.Allocator, ) ![]u8 { try stderr.print( "{f}{f}{f} ", .{ ansi.Styled { .text = " ", .bg = .blue, .bold = true, }, ansi.Styled { .text = prompt, .bg = .blue, .bold = true, }, ansi.Styled { .text = ": ", .bg = .blue, .bold = true, }, }, ); try stderr.flush(); var output = std.Io.Writer.Allocating.init(allocator); errdefer output.deinit(); _ = try stdin.streamDelimiter(&output.writer, '\n'); stdin.toss(1); return output.toOwnedSlice(); }