Sha256: 362ff68d0eece0c4ac9bdccdb11530ad058f419a785ac10d28ccede447797bf6

Contents?: true

Size: 748 Bytes

Versions: 3

Compression:

Stored size: 748 Bytes

Contents

# frozen_string_literal: true

module Engines
  module Custom
    class Extractor
      def call(provider)
        provider.emit(metrics)
      end

      def requirements?
        custom_files.length.positive?
      end

      private

      def custom_files
        Dir.glob('./.codemonitor/*.rb')
      end

      def metrics
        custom_files.map do |file|
          values = begin
            eval File.read(file)
          rescue SyntaxError => e
            raise "Unable to execute the custom codemonitor script `#{file}` file"
          end

          raise "Malformed return value from `#{file}` file. It must be a hash of metrics" unless values.is_a?(Hash)

          values
        end.reduce({}, :merge)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
codemonitor-0.6.0 engines/custom/extractor.rb
codemonitor-0.5.0 engines/custom/extractor.rb
codemonitor-0.4.0 engines/custom/extractor.rb