Module: Klimt::Commands::Rendering

Included in:
Klimt::Command, City, Partner
Defined in:
lib/klimt/commands/rendering.rb

Instance Method Summary collapse

Instance Method Details

#jq_installed?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/klimt/commands/rendering.rb', line 27

def jq_installed?
  !`command -v jq`.empty?
end

#render(obj, jq_options: nil, jq_filter: nil) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/klimt/commands/rendering.rb', line 4

def render(obj, jq_options: nil, jq_filter: nil)
  if jq_installed?
    render_with_jq(obj, opts: jq_options, filter: jq_filter)
  else
    render_pretty(obj)
  end
end

#render_pretty(obj) ⇒ Object



23
24
25
# File 'lib/klimt/commands/rendering.rb', line 23

def render_pretty(obj)
  puts JSON.pretty_generate JSON.parse(obj)
end

#render_with_jq(obj, opts: nil, filter: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/klimt/commands/rendering.rb', line 12

def render_with_jq(obj, opts: nil, filter: nil)
  opts ||= ''
  opts << ' -C' if options[:color]
  filter ||= '.'
  IO.popen("jq #{opts} \"#{filter}\"", 'r+') do |p|
    p.write obj
    p.close_write
    puts p.read
  end
end