class Chronicle::ETL::CLI::Jobs
Public Instance Methods
create()
click to toggle source
Create an ETL
job
# File lib/chronicle/etl/cli/jobs.rb, line 48 def create job_definition = build_job_definition(options) path = File.join('chronicle', 'etl', 'jobs', options[:name]) Chronicle::ETL::Config.write(path, job_definition) end
list()
click to toggle source
List available ETL
jobs
# File lib/chronicle/etl/cli/jobs.rb, line 63 def list jobs = Chronicle::ETL::Config.available_jobs job_details = jobs.map do |job| r = Chronicle::ETL::Config.load("chronicle/etl/jobs/#{job}.yml") extractor = r[:extractor][:name] if r[:extractor] transformer = r[:transformer][:name] if r[:transformer] loader = r[:loader][:name] if r[:loader] [job, extractor, transformer, loader] end headers = ['name', 'extractor', 'transformer', 'loader'].map{|h| h.upcase.bold } table = TTY::Table.new(headers, job_details) puts table.render(indent: 0, padding: [0, 2]) end
show()
click to toggle source
Show an ETL
job
# File lib/chronicle/etl/cli/jobs.rb, line 56 def show job_config = build_job_definition(options) pp job_config end
start()
click to toggle source
# File lib/chronicle/etl/cli/jobs.rb, line 32 def start job_definition = build_job_definition(options) job = Chronicle::ETL::Job.new(job_definition) runner = Chronicle::ETL::Runner.new(job) runner.run! rescue Chronicle::ETL::ProviderNotAvailableError => e warn(e.message.red) warn(" Perhaps you haven't installed it yet: `$ gem install chronicle-#{e.provider}`") exit(false) rescue Chronicle::ETL::ConnectorNotAvailableError => e warn(e.message.red) exit(false) end
Private Instance Methods
build_job_definition(options)
click to toggle source
Create job definition by reading config file and then overwriting with flag options
# File lib/chronicle/etl/cli/jobs.rb, line 85 def build_job_definition(options) definition = Chronicle::ETL::JobDefinition.new definition.add_config(process_flag_options(options)) definition.add_config(load_job_config(options[:name])) definition end
load_job_config(name)
click to toggle source
# File lib/chronicle/etl/cli/jobs.rb, line 92 def load_job_config name Chronicle::ETL::Config.load_job_from_config(name) end
process_flag_options(options)
click to toggle source
Takes flag options and turns them into a runner config
# File lib/chronicle/etl/cli/jobs.rb, line 97 def process_flag_options options { extractor: { name: options[:extractor], options: options[:'extractor-opts'] }, transformer: { name: options[:transformer], options: options[:'transformer-opts'] }, loader: { name: options[:loader], options: options[:'loader-opts'] } } end