lib/miga/cli/action/add_result.rb
# @package MiGA
# @license Artistic-2.0
require 'miga/cli/action'
class MiGA::Cli::Action::AddResult < MiGA::Cli::Action
def parse_cli
cli.defaults = { force: false, stdin_versions: false }
cli.parse do |opt|
cli.opt_object(opt, [:project, :dataset_opt, :result])
opt.on(
'-f', '--force',
'Force re-indexing of the result even if it\'s already registered'
) { |v| cli[:force] = v }
opt.on(
'--stdin-versions',
'Read Software versions from STDIN'
) { |v| cli[:stdin_versions] = v }
end
end
def perform
cli.ensure_par(result: '-r')
obj = cli.load_project_or_dataset
cli.say "Registering result: #{cli[:result]}"
r = obj.add_result(cli[:result], true, force: cli[:force])
raise 'Cannot add result, incomplete expected files' if r.nil?
# Add Software version data
if cli[:stdin_versions]
versions = {}
sw = nil
$stdin.each do |ln|
ln = ln.chomp.strip
if ln =~ /^=> (.*)/
sw = $1
versions[sw] = ''
else
versions[sw] += ln
end
end
r.add_versions(versions)
r.save
end
end
end