lib/tasks/config.thor
# Copyright:: (c) Autotelik Media Ltd 2016
# Author :: Tom Statter
# Date :: Mar 2016
# License:: MIT.
#
#
require 'thor'
require_relative 'thor_behaviour'
# Note, not DataShift, case sensitive, create namespace for command line : datashift
module Datashift
module Config
class Generate < Thor
DEFAULT_IMPORT_TEMPLTE ||= 'import_mapping_template.yaml'.freeze
include DataShift::ThorBehavior
desc 'import', 'Generate an Import configuration template (YAML)'
method_option :model, aliases: '-m', required: true, desc: 'The active record model to use for mappings'
method_option :result, aliases: '-r', required: true,
desc: "Path or file to create resulting YAML config\n\nIf a PATH supplied, filename will be [#{DEFAULT_IMPORT_TEMPLTE}]"
# :remove_columns - List of columns to remove from files
#
# :remove_rails - Remove standard Rails cols like :id, created_at etc
def import
start_connections
result = options[:result]
result = File.join(result, DEFAULT_IMPORT_TEMPLTE) if File.directory?(result)
logger.info "Datashift: Starting Import mapping template generation to [#{result}]"
mapper = DataShift::ConfigGenerator.new
puts "Creating new configuration file : [#{result}]"
begin
mapper.write_import(result, options[:model], options)
rescue StandardError => x
puts "ERROR - Failed to create config file #{result}"
puts x.message
end
end
end
end
end