Changes
4 changed files (+40/-26)
-
-
@@ -22,9 +22,11 @@ const optimize = b.standardOptimizeOption(.{});const exe = b.addExecutable(.{ .name = ",waybar-text", .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, .root_module = b.createModule(.{ .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, }), }); b.installArtifact(exe);
-
-
-
@@ -14,12 +14,12 @@ # limitations under the License.# # SPDX-License-Identifier: Apache-2.0 { stdenvNoCC, zig_0_14 }: { stdenvNoCC, zig }: stdenvNoCC.mkDerivation rec { pname = "my-waybar-text"; version = "1.0.0"; nativeBuildInputs = [ zig_0_14.hook ]; nativeBuildInputs = [ zig.hook ]; src = ./.;
-
-
-
@@ -43,11 +43,17 @@ const allocator = arena.allocator();const options = Options.init(allocator) catch |err| switch (err) { error.IncorrectUsage => { try std.io.getStdErr().writeAll(Options.helpText); var stderr = std.fs.File.stderr().writer(&.{}); const writer = &stderr.interface; try writer.writeAll(Options.helpText); return ExitCode.incorrect_usage.to_u8(); }, error.ShowHelp => { try std.io.getStdOut().writeAll(Options.helpText); var stdout = std.fs.File.stdout().writer(&.{}); const writer = &stdout.interface; try writer.writeAll(Options.helpText); return ExitCode.ok.to_u8(); }, error.OutOfMemory => {
-
@@ -94,7 +100,21 @@ fn print(allocator: std.mem.Allocator, opts: *const Options) !void {const file = try std.fs.openFileAbsolute(opts.file_path, .{}); defer file.close(); const line = try file.reader().readUntilDelimiterAlloc(allocator, '\n', std.math.maxInt(usize)); // Most of my lines falls under 100 characters and do not contain // non-ASCII range. var file_buffer: [128]u8 = undefined; var file_reader = file.reader(&file_buffer); const reader = &file_reader.interface; var line_writer = std.Io.Writer.Allocating.init(allocator); defer line_writer.deinit(); _ = reader.streamDelimiter(&line_writer.writer, '\n') catch |err| switch (err) { error.EndOfStream => {}, else => return err, }; const line = try line_writer.toOwnedSlice(); defer allocator.free(line); const line_trimmed: []const u8 = if (opts.trim_markdown_list_prefix) line_start: {
-
@@ -114,15 +134,13 @@ .tooltip = line_trimmed,.class = opts.class, }; const buffer = try allocator.alloc(u8, output.getEncodedSize() + 1); defer allocator.free(buffer); var output_buffer: [1024]u8 = undefined; var output_writer = std.fs.File.stdout().writer(&output_buffer); const writer = &output_writer.interface; var fbs = std.io.fixedBufferStream(buffer); const writer = fbs.writer(); try output.encode(writer); try writer.writeByte('\n'); try std.io.getStdOut().writeAll(buffer); try writer.flush(); } const watch_flags = std.os.linux.IN.MODIFY | std.os.linux.IN.DELETE_SELF;
-
-
-
@@ -21,18 +21,12 @@ text: []const u8,tooltip: ?[]const u8 = null, class: ?[]const u8 = null, const jsonStringifyOptions = std.json.StringifyOptions{ .emit_null_optional_fields = false, .whitespace = .minified, }; pub fn getEncodedSize(self: *const @This()) usize { var cw = std.io.countingWriter(std.io.null_writer); std.json.stringify(self, jsonStringifyOptions, cw.writer()) catch return 0; return cw.bytes_written; } pub fn encode(self: *const @This(), writer: *std.Io.Writer) std.Io.Writer.Error!void { var json_writer = std.json.Stringify{ .writer = writer, .options = .{ .emit_null_optional_fields = false, .whitespace = .minified }, }; pub fn encode(self: *const @This(), writer: anytype) @TypeOf(writer).Error!void { try std.json.stringify(self, jsonStringifyOptions, writer); try json_writer.write(self); } };
-