# File lib/miga/cli/action/tax_set.rb, line 7 def parse_cli cli.parse do |opt| cli.opt_object(opt, [:project, :dataset_opt]) opt.on( '-s', '--tax-string STRING', 'String corresponding to the taxonomy of the dataset', 'A space-delimited set of \rank:name\ pairs' ) { |v| cli[:taxstring] = v } opt.on( '-t', '--tax-file PATH', '(Mandatory unless -D and -s are provided)', 'Tab-delimited file containing datasets taxonomy', 'Each row corresponds to a datasets and each column to a rank', 'The first row must be a header with the rank names,', 'and the first column must contain dataset names' ) { |v| cli[:taxfile] = v } end end
# File lib/miga/cli/action/tax_set.rb, line 26 def perform p = cli.load_project if !cli[:taxfile].nil? cli.say 'Reading tax-file and registering taxonomy' tfh = File.open(cli[:taxfile], 'r') header = nil tfh.each_line do |ln| next if ln =~ /^\s*?$/ r = ln.chomp.split(/\t/, -1) dn = r.shift if header.nil? header = r next end d = p.dataset(dn) if d.nil? warn "Impossible to find dataset at line #{$.}: #{dn}. Ignoring..." next end d.metadata[:tax] = Taxonomy.new(r, header) d.save cli.say "o #{d.name} registered" end tfh.close else cli.ensure_par({ dataset: '-D', taxstring: '-s' }, '%<flag>s is mandatory unless -t is provided') cli.say 'Registering taxonomy' d = cli.load_dataset d.metadata[:tax] = Taxonomy.new(cli[:taxstring]) d.save end end