tmux-fingers/src/fingers/input_socket.cr

45 lines
682 B
Crystal

require "socket"
require "./dirs"
module Fingers
class InputSocket
@path : String
def initialize(path = Fingers::Dirs::SOCKET_PATH.to_s)
@path = path
end
def on_input
remove_socket_file
loop do
socket = server.accept
message = socket.gets
yield (message || "")
end
end
def send_message(cmd)
socket = UNIXSocket.new(path)
socket.puts(cmd)
socket.close
end
def close
server.close
remove_socket_file
end
private getter :path
def server
@server ||= UNIXServer.new(path)
end
def remove_socket_file
`rm -rf #{path}`
end
end
end