Class: Architext::Clipboard

Inherits:
Object
  • Object
show all
Defined in:
lib/architext/clipboard.rb

Defined Under Namespace

Classes: CommandFailed, Error, UnsupportedPlatform

Instance Method Summary collapse

Constructor Details

#initialize(runner: Open3.method(:capture3), env: ENV, host_os: RbConfig::CONFIG['host_os']) ⇒ Clipboard

Returns a new instance of Clipboard.



12
13
14
15
16
# File 'lib/architext/clipboard.rb', line 12

def initialize(runner: Open3.method(:capture3), env: ENV, host_os: RbConfig::CONFIG['host_os'])
  @runner = runner
  @env = env
  @host_os = host_os.to_s.downcase
end

Instance Method Details

#copy(text) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/architext/clipboard.rb', line 18

def copy(text)
  copied = false

  candidates.each do |command|
    _out, err, status = @runner.call(*command, stdin_data: text.to_s)
    if status.success?
      copied = true
      break
    end

    details = err.to_s.strip
    details = "exit #{status.exitstatus}" if details.empty?
    raise CommandFailed, "Clipboard command failed: #{command.join(' ')} (#{details})"
  rescue Errno::ENOENT
    next
  end

  return if copied

  raise UnsupportedPlatform,
        'No supported clipboard command found. Use --stdout to print and pipe to your clipboard tool.'
end