class Meer::CLI
Constants
- JOB_HEADERS
Public Instance Methods
csv(workbook, sheet)
click to toggle source
# File lib/meer/cli.rb, line 30 def csv(workbook, sheet) puts client.workbook_data(workbook, sheet) end
jobs()
click to toggle source
# File lib/meer/cli.rb, line 59 def jobs data = client.running_jobs rows = if data.size > 0 data.select!{|r| r['dapJobConfigurationId'].to_i == options[:workbook] } if options[:workbook] data.select!{|r| r['jobExecutionId'].to_i == options[:job] } if options[:job] data.sort_by {|r| -r['progress'].to_i }.map { |r| JOB_HEADERS.map{|k| r[k]} } else [] end puts Terminal::Table.new(headings: JOB_HEADERS, rows: rows) end
login()
click to toggle source
# File lib/meer/cli.rb, line 7 def login user = ask("username:", default: ENV['USER']) password = ask("password:", :echo => false) puts client(user, password).login end
sheets(workbook_id)
click to toggle source
# File lib/meer/cli.rb, line 23 def sheets(workbook_id) client.workbook(workbook_id)['sheets'].each do |sheet| puts " - #{sheet['name']}" end end
start(wb_id)
click to toggle source
# File lib/meer/cli.rb, line 50 def start(wb_id) puts client.run_workbook(wb_id).to_yaml end
table(workbook, sheet)
click to toggle source
# File lib/meer/cli.rb, line 37 def table(workbook, sheet) data = client.workbook_data(workbook, sheet) rows = CSV.parse(data, :headers => true).to_a headers = rows.slice!(0) schema = parse_schema(headers, rows.first) filter!(schema, rows, options[:filter]) if options[:filter] sort!(schema, rows, options[:sort]) if options[:sort] puts Terminal::Table.new(headings: headers, rows: rows) end
workbooks()
click to toggle source
# File lib/meer/cli.rb, line 16 def workbooks client.workbooks.sort_by { |w| w['path'] }.each do |workbook| puts " - [#{workbook['id']}] #{workbook['path']}" end end
Private Instance Methods
client(user=nil, password=nil)
click to toggle source
# File lib/meer/cli.rb, line 75 def client user=nil, password=nil @client = Datameer.new ENV['DATAMEER_URL'], user, password end
filter!(schema, rows, filter_str)
click to toggle source
# File lib/meer/cli.rb, line 93 def filter! schema, rows, filter_str cols = filter_str.split(?,).map do |name| name, q = name.split('=') OpenStruct.new(col: schema[name], query: q) end rows.select! do |row| cols.map{|c| row[c.col.index].to_s =~ /#{c.query}/ }.all? end end
parse_schema(headers, row)
click to toggle source
# File lib/meer/cli.rb, line 79 def parse_schema(headers, row) schema = Hash.new headers.each_with_index do |col_name, idx| type = :number if Float(row[idx]) rescue false type ||= :time if row[idx] =~ /\A\w+ \d{1,2}, \d{4} \d{1,2}:\d{1,2}:\d{1,2} (AM|PM)\z/ type ||= :string schema[col_name] = OpenStruct.new type: type, index: idx end schema end
sort!(schema, rows, sort_str)
click to toggle source
# File lib/meer/cli.rb, line 105 def sort! schema, rows, sort_str cols = sort_str.split(',').map do |name| reverse = name[-1] == '-' name = name[0..-2] if reverse OpenStruct.new(col: schema[name], reverse: reverse) end rows.sort_by! do |row| cols.map do |c| val = row[c.col.index] val = val.to_f if c.col.type == :number val = Time.parse(val) if c.col.type == :time val = ReverseOrder.new(val) if c.reverse val end end end