misc: cleanup

This commit is contained in:
Grace Yoder 2026-06-30 14:32:23 -06:00
parent 8062e417f2
commit 63265d1d7e
Signed by: grace
SSH key fingerprint: SHA256:oG9v0ZlohsoMAg083HAwBGOcaPLF3nIuOlAW4MtASMo
3 changed files with 26 additions and 20 deletions

View file

@ -4,7 +4,8 @@ const builtin = @import("builtin");
pub const OSC52 = @import("Clip/OSC52.zig");
// Ideally we would make else be `@compileError` but that
// messes up with the interface checking
pub const NSPasteboard = if (builtin.target.os.tag == .macos) @import("Clip/NSPasteboard.zig") else void;
pub const NSPasteboard =
if (builtin.target.os.tag == .macos) @import("Clip/NSPasteboard.zig") else void;
// I am not sure if this is super idiomatic Zig or if this is bad practice, but
// by ensuring that all Clip backends implement the same methods, we are able

View file

@ -3,7 +3,6 @@
pub const OSC52 = @This();
const std = @import("std");
const Io = std.Io;
alloc: std.mem.Allocator,
io: std.Io,
@ -13,9 +12,10 @@ base64buffer: std.ArrayList(u8),
leftover_bytes: [3]u8,
leftover_count: u8,
const base64encoder = std.base64.Base64Encoder.init(std.base64.standard_alphabet_chars, '=');
const base64encoder =
std.base64.Base64Encoder.init(std.base64.standard_alphabet_chars, '=');
pub fn init(alloc: std.mem.Allocator, io: Io, buf_size: usize) !OSC52 {
pub fn init(alloc: std.mem.Allocator, io: std.Io, buf_size: usize) !OSC52 {
return .{
.alloc = alloc,
.io = io,
@ -51,7 +51,6 @@ pub fn writeCopyBuffer(self: *OSC52, buf: []const u8) anyerror!void {
const chunkable_length = buf.len - ((buf.len - buf_idx) % 3);
var chunker = std.mem.window(u8, buf[buf_idx..chunkable_length], 3, 3);
while (chunker.next()) |chunk| {
// var temp: [5]u8 = undefined;
s = OSC52.base64encoder.encode(&temp, chunk);
try self.base64buffer.appendSlice(self.alloc, s);
}
@ -87,7 +86,7 @@ pub fn writePasteboard(self: *OSC52) anyerror!void {
};
// Write data to stdout
const stdout = Io.File.stdout();
const stdout = std.Io.File.stdout();
try stdout.writeStreamingAll(self.io, osc_header);
try stdout.writeStreamingAll(self.io, self.base64buffer.items);
try stdout.writeStreamingAll(self.io, osc_footer);

View file

@ -10,7 +10,11 @@ pub fn main(init: std.process.Init) !void {
// This program should not be run interactively
if (try File.stdin().isTty(io)) {
std.debug.print("This program is not meant to be run interactively. Please pipe into this program.\n", .{});
std.debug.print(
\\ This program is not meant to be run interactively.
\\ Please pipe into this program.
\\
, .{});
std.process.exit(1);
}
@ -19,27 +23,29 @@ pub fn main(init: std.process.Init) !void {
const alloc = std.heap.page_allocator;
const size = std.heap.pageSize();
const is_ssh = init.environ_map.get("SSH_CONNECTION") != null or
const is_ssh =
init.environ_map.get("SSH_CONNECTION") != null or
init.environ_map.get("SSH_CLIENT") != null or
init.environ_map.get("SSH_TTY") != null;
// This can be cleaned up
if (is_ssh) {
var clip = try Clip.OSC52.init(alloc, io, size);
defer clip.free();
try run(io, &clip);
} else {
return;
}
if (comptime os == .macos) {
var clip = try Clip.NSPasteboard.init(alloc, io, size);
defer clip.free();
try run(io, &clip);
} else {
// No Linux Clipboards yet
return;
}
// Fallback Clipboard
var clip = try Clip.OSC52.init(alloc, io, size);
defer clip.free();
try run(io, &clip);
}
}
}
pub fn run(io: std.Io, clip: anytype) !void {