#!/usr/bin/env ruby require 'optparse' require 'dm-core' require 'ostruct' opt = OpenStruct.new opt.all = false opt.storage = "misc_apis" opt.host = "mysql://access:access@mysql-lan-pro" ARGV.options {|opts| opts.banner << " [dataset .. dataset..]" opts.on("-a", "--all", "summarize all datasets in database") {|t| opt.all = t} opts.on("-s ", "--storage ", String, "storage database (default #{opt.storage})") {|t| opt.storage = t} opts.on("-h ", "--host ", String, "database host (default #{opt.host})") {|t| opt.host = t} begin opts.parse! rescue STDERR.puts $!.message STDERR.puts opts exit(1) end if (ARGV.size < 1 && !opt.all) STDERR.puts opts exit(1) end } DataMapper.setup(:default, "#{opt.host}/#{opt.storage}") if (opt.all) repository(:default).adapter.select("SELECT dataset FROM dataset").each do |dataset| ARGV.push(dataset) end end ARGV.each do |dataset| STDERR.printf("Processing %s...\n", dataset) date = "" date = repository(:default).adapter.select("SELECT date_added FROM dataset WHERE dataset = '#{dataset}'").first num = repository(:default).adapter.select("SELECT count(*) FROM sequence WHERE dataset = '#{dataset}'").first complete = repository(:default).adapter.select("SELECT count(*) FROM sequence WHERE dataset = '#{dataset}' AND processed = 1").first printf("%s\t%s\t%d\t%d\t%d%%\n", dataset, date, num, complete, complete*100/num) end