diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-14 21:55:59 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2025-11-14 21:55:59 +0100 |
| commit | 3f18f02d07802d1fc705a500e5978a9b3cb2e751 (patch) | |
| tree | 283970a2f5a693706456b853c550eeaa669b5d72 /src/prompt.zig | |
| parent | 351ad457f0ff95e20301a146b8c88a8f0f659aa1 (diff) | |
implement login
Diffstat (limited to 'src/prompt.zig')
| -rw-r--r-- | src/prompt.zig | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/prompt.zig b/src/prompt.zig new file mode 100644 index 0000000..9fa9a9a --- /dev/null +++ b/src/prompt.zig @@ -0,0 +1,44 @@ +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(); +} |