1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'jsonpath'
require 'multi_json'
def usage
puts "jsonpath [expression] (file|string)
If you omit the second argument, it will read stdin, assuming one valid JSON object
per line. Expression must be a valid jsonpath expression."
exit!
end
usage unless ARGV[0]
jsonpath = JsonPath.new(ARGV[0])
case ARGV[1]
when nil # stdin
puts MultiJson.encode(jsonpath.on(MultiJson.decode(STDIN.read)))
when String
puts MultiJson.encode(jsonpath.on(MultiJson.decode(File.exist?(ARGV[1]) ? File.read(ARGV[1]) : ARGV[1])))
end
|