Commit d4148d1
Changed files (3)
lib
elelem
lib/elelem/agent.rb
@@ -3,7 +3,6 @@
module Elelem
class Agent
COMMANDS = %w[/clear /context /exit /help].freeze
- MAX_LINES = 30
attr_reader :history, :client, :toolbox, :terminal
lib/elelem/terminal.rb
@@ -18,7 +18,17 @@ module Elelem
def markdown(text)
width = $stdout.winsize[1] rescue 80
- IO.popen(["bat", "--squeeze-blank", "--style=plain", "--paging=never", "--color=always", "--language", "markdown", "--terminal-width", width.to_s, "-"], "r+") do |io|
+ IO.popen([
+ "bat",
+ "--squeeze-blank",
+ "--style=plain",
+ "--paging=never",
+ "--color=always",
+ "--language",
+ "markdown",
+ "--terminal-width", width.to_s,
+ "-"
+ ], "r+") do |io|
io.write(text)
io.close_write
io.read
@@ -42,7 +52,12 @@ module Elelem
end
def file(path)
- Elelem.sh("bat", args: ["--style=plain", "--paging=never", "--color=always", path]) { |x| $stdout.print(x) }
+ Elelem.sh("bat", args: [
+ "--style=plain",
+ "--paging=never",
+ "--color=always",
+ path
+ ]) { |x| $stdout.print(x) }
end
def waiting
@@ -73,6 +88,7 @@ module Elelem
def complete(target, preposing)
line = "#{preposing}#{target}"
return @commands.select { |c| c.start_with?(line) } if line.start_with?("/") && !preposing.include?(" ")
+
complete_files(target)
end
lib/elelem.rb
@@ -16,12 +16,14 @@ require_relative "elelem/version"
module Elelem
def self.sh(cmd, args: [], cwd: Dir.pwd, env: {})
output = StringIO.new
+
Open3.popen2e(env, cmd, *args, chdir: cwd) do |stdin, out, wait_thr|
stdin.close
- out.each_line do |l|
- yield l if block_given?
- output.write(l)
+ out.each_line do |line|
+ yield line if block_given?
+ output.write(line)
end
+
{ exit_status: wait_thr.value.exitstatus, content: output.string }
end
end