Sha256: c862bcbba5088ca025cfd1e8383918bdbc4e27e23efc9a0c6b0c07ea3fa48bc2

Contents?: true

Size: 1.16 KB

Versions: 25

Compression:

Stored size: 1.16 KB

Contents

require 'sequel/annotate'

module PactBroker
  class Annotate
    def self.call
      annotation_configuration.each_pair do | klass, path |
        puts "Annotating #{klass}"
        sa = Sequel::Annotate.new(klass)
        sa.annotate(path)
      end
    end

    def self.annotation_configuration
      sequel_domain_classes.each_with_object({}) do | klass, configs |
        file_path = file_path_for_class(klass)
        if File.exist?(file_path)
          configs[klass] = file_path
        else
          puts "Skipping annotation for #{klass} as the generated file path #{file_path} does not exist"
        end
      end
    end

    def self.sequel_domain_classes

      Dir.chdir("lib") { Dir.glob("**/*.rb") }.sort.each do | path |
        require path
      end

      ObjectSpace
        .each_object(::Class).select {|klass| klass < ::Sequel::Model }
        .select{ |klass| klass.name && klass.name.start_with?("PactBroker::") }
        .sort{ | c1, c2| c1.name <=> c2.name }
    end

    def self.file_path_for_class klass
      "lib/" + klass.name.gsub('::', '/').gsub(/([a-z])([A-Z])/) {|match| match[0] + "_" + match[1].downcase }.downcase + ".rb"
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
pact_broker-2.42.0 tasks/database/annotate.rb
pact_broker-2.41.0 tasks/database/annotate.rb
pact_broker-2.40.0 tasks/database/annotate.rb
pact_broker-2.39.0 tasks/database/annotate.rb
pact_broker-2.38.1 tasks/database/annotate.rb
pact_broker-2.38.0 tasks/database/annotate.rb
pact_broker-2.37.0 tasks/database/annotate.rb
pact_broker-2.36.1 tasks/database/annotate.rb
pact_broker-2.36.0 tasks/database/annotate.rb
pact_broker-2.35.0 tasks/database/annotate.rb
pact_broker-2.34.0 tasks/database/annotate.rb
pact_broker-2.33.0 tasks/database/annotate.rb
pact_broker-2.32.0 tasks/database/annotate.rb
pact_broker-2.31.0 tasks/database/annotate.rb
pact_broker-2.30.0 tasks/database/annotate.rb
pact_broker-2.29.0 tasks/database/annotate.rb
pact_broker-2.27.6 tasks/database/annotate.rb
pact_broker-2.27.5 tasks/database/annotate.rb
pact_broker-2.27.4 tasks/database/annotate.rb
pact_broker-2.27.3 tasks/database/annotate.rb