class Cagnut::Pipeline::Base
Attributes
pipelines[R]
Public Class Methods
register(klass)
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 8 def register klass @pipelines ||= [] @pipelines << klass end
Public Instance Methods
start(*args)
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 14 def start *args ENV['BUNDLE_GEMFILE'] ||= File.expand_path('./Gemfile', Dir.pwd) require 'bundler/setup' Bundler.require(:default) options = pepeline_opts run_filter options[:run] if options[:run] config_name = get_config_name options[:run] config = Cagnut.load_config config_name, options config['dodebug'] = options[:debug] config['samples'].each do |sample| config['sample'] = sample run_pipeline options[:run] if options[:run] execute_command config, sample unless options[:debug] end end
Private Instance Methods
execute_command(config, sample)
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 59 def execute_command config, sample job = fork do exec "#{sample['jobs']}/submit_command_#{sample['name']}.jobs" end Process.detach(job) end
get_config_name(pipeline_names)
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 33 def get_config_name pipeline_names abort 'Did not assign pipeline to run' if pipeline_names.blank? selected = self.class.pipelines.find do |p| if p.try(:pipeline_names) !( pipeline_names & p.pipeline_names ).empty? elsif p.try(:pipeline_name) pipeline_names.include? p.pipeline_name else puts "Can not find tools yml" exit end end selected.config_name end
pepeline_opts(options = {})
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 66 def pepeline_opts options = {} OptionParser.new do |opts| opts.banner = 'Usage: example.rb [options]' opts.on('-d', '--debug', 'Dodebug') do options[:debug] = true end opts.on('-c', '--config yaml', 'Cagnut Config YAML') do |c| options[:config] = c end opts.on('-n', '--no_check_tools', 'Not Check Tools') do options[:no_check] = true end opts.on('-r', '--run draw1,draw2,draw3 or xyz', Array, 'run: draw1,draw2,draw3 or xyz') do |r| options[:run] = r end opts.on('-p', '--parameter yaml', 'Cagnut Parameter Config YAML') do |p| options[:params] = p end opts.on('-l', '--list', 'Pipeline List') do list = self.class.pipelines.map do |pipeline| pipeline.try(:pipeline_names) || pipeline.try(:pipeline_name) end puts "\s\s#{list.join("\n\s\s")}" end opts.on('-h', '--help', 'Help') do puts "Help" end end.parse! return options end
run_filter(names)
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 48 def run_filter names puts 'Pipeline Conflict!' exit end
run_pipeline(pipelines, job_name = '', filename = '')
click to toggle source
# File lib/cagnut/cli/pipeline.rb, line 53 def run_pipeline pipelines, job_name = '', filename = '' pipelines.sort.each do |pipeline| job_name, filename = send "pipeline_#{pipeline}", { job_name: job_name, filename: filename } end end