misc: cleanup
This commit is contained in:
parent
8062e417f2
commit
63265d1d7e
3 changed files with 26 additions and 20 deletions
|
|
@ -4,7 +4,8 @@ const builtin = @import("builtin");
|
||||||
pub const OSC52 = @import("Clip/OSC52.zig");
|
pub const OSC52 = @import("Clip/OSC52.zig");
|
||||||
// Ideally we would make else be `@compileError` but that
|
// Ideally we would make else be `@compileError` but that
|
||||||
// messes up with the interface checking
|
// 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
|
// 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
|
// by ensuring that all Clip backends implement the same methods, we are able
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
pub const OSC52 = @This();
|
pub const OSC52 = @This();
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const Io = std.Io;
|
|
||||||
|
|
||||||
alloc: std.mem.Allocator,
|
alloc: std.mem.Allocator,
|
||||||
io: std.Io,
|
io: std.Io,
|
||||||
|
|
@ -13,9 +12,10 @@ base64buffer: std.ArrayList(u8),
|
||||||
leftover_bytes: [3]u8,
|
leftover_bytes: [3]u8,
|
||||||
leftover_count: 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 .{
|
return .{
|
||||||
.alloc = alloc,
|
.alloc = alloc,
|
||||||
.io = io,
|
.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);
|
const chunkable_length = buf.len - ((buf.len - buf_idx) % 3);
|
||||||
var chunker = std.mem.window(u8, buf[buf_idx..chunkable_length], 3, 3);
|
var chunker = std.mem.window(u8, buf[buf_idx..chunkable_length], 3, 3);
|
||||||
while (chunker.next()) |chunk| {
|
while (chunker.next()) |chunk| {
|
||||||
// var temp: [5]u8 = undefined;
|
|
||||||
s = OSC52.base64encoder.encode(&temp, chunk);
|
s = OSC52.base64encoder.encode(&temp, chunk);
|
||||||
try self.base64buffer.appendSlice(self.alloc, s);
|
try self.base64buffer.appendSlice(self.alloc, s);
|
||||||
}
|
}
|
||||||
|
|
@ -87,7 +86,7 @@ pub fn writePasteboard(self: *OSC52) anyerror!void {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Write data to stdout
|
// 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, osc_header);
|
||||||
try stdout.writeStreamingAll(self.io, self.base64buffer.items);
|
try stdout.writeStreamingAll(self.io, self.base64buffer.items);
|
||||||
try stdout.writeStreamingAll(self.io, osc_footer);
|
try stdout.writeStreamingAll(self.io, osc_footer);
|
||||||
|
|
|
||||||
34
src/main.zig
34
src/main.zig
|
|
@ -10,7 +10,11 @@ pub fn main(init: std.process.Init) !void {
|
||||||
|
|
||||||
// This program should not be run interactively
|
// This program should not be run interactively
|
||||||
if (try File.stdin().isTty(io)) {
|
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);
|
std.process.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -19,27 +23,29 @@ pub fn main(init: std.process.Init) !void {
|
||||||
const alloc = std.heap.page_allocator;
|
const alloc = std.heap.page_allocator;
|
||||||
const size = std.heap.pageSize();
|
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_CLIENT") != null or
|
||||||
init.environ_map.get("SSH_TTY") != null;
|
init.environ_map.get("SSH_TTY") != null;
|
||||||
|
|
||||||
// This can be cleaned up
|
|
||||||
if (is_ssh) {
|
if (is_ssh) {
|
||||||
var clip = try Clip.OSC52.init(alloc, io, size);
|
var clip = try Clip.OSC52.init(alloc, io, size);
|
||||||
defer clip.free();
|
defer clip.free();
|
||||||
try run(io, &clip);
|
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
|
|
||||||
var clip = try Clip.OSC52.init(alloc, io, size);
|
|
||||||
defer clip.free();
|
|
||||||
try run(io, &clip);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (comptime os == .macos) {
|
||||||
|
var clip = try Clip.NSPasteboard.init(alloc, io, size);
|
||||||
|
defer clip.free();
|
||||||
|
try run(io, &clip);
|
||||||
|
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 {
|
pub fn run(io: std.Io, clip: anytype) !void {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue