lib/chronicle/etl/job_definition.rb in chronicle-etl-0.4.2 vs lib/chronicle/etl/job_definition.rb in chronicle-etl-0.4.3

- old
+ new

@@ -24,32 +24,43 @@ def initialize() @definition = SKELETON_DEFINITION end + def valid? + validate + @errors.empty? + end + def validate - @errors = [] + @errors = {} Chronicle::ETL::Registry::PHASES.each do |phase| __send__("#{phase}_klass".to_sym) rescue Chronicle::ETL::PluginError => e - @errors << e + @errors[:plugins] ||= [] + @errors[:plugins] << e end + end - @errors.empty? + def plugins_missing? + validate + + @errors[:plugins] || [] + .filter { |e| e.instance_of?(Chronicle::ETL::PluginLoadError) } + .any? end def validate! - raise(Chronicle::ETL::JobDefinitionError.new(self), "Job definition is invalid") unless validate + raise(Chronicle::ETL::JobDefinitionError.new(self), "Job definition is invalid") unless valid? true end # Add config hash to this definition def add_config(config = {}) @definition = @definition.deep_merge(config) load_credentials - validate end # Is this job continuing from a previous run? def incremental? @definition[:incremental]