class CC::EngineRegistry
Constants
- DEFAULT_COMMAND
- DEFAULT_MANIFEST_PATH
- DEFAULT_MEMORY_LIMIT
- EngineDetails
- EngineDetailsNotFoundError
Attributes
prefix[R]
yaml[R]
Public Class Methods
new(path = DEFAULT_MANIFEST_PATH, prefix = nil)
click to toggle source
# File lib/cc/engine_registry.rb, line 12 def initialize(path = DEFAULT_MANIFEST_PATH, prefix = nil) @yaml = YAML.safe_load(File.read(path)) @prefix = prefix || ENV["CODECLIMATE_PREFIX"] || "" end
Public Instance Methods
each() { |engine, engine_details| ... }
click to toggle source
# File lib/cc/engine_registry.rb, line 17 def each yaml.each do |name, metadata| engine = Config::Engine.new( name, channel: metadata.fetch("channels").keys.first, ) engine_details = fetch_engine_details(engine) yield(engine, engine_details) end end
fetch_engine_details(engine, development: false)
click to toggle source
# File lib/cc/engine_registry.rb, line 29 def fetch_engine_details(engine, development: false) if development EngineDetails.new("codeclimate/codeclimate-#{engine.name}", nil, "") else metadata = yaml.fetch(engine.name) channels = metadata.fetch("channels") EngineDetails.new( [prefix, channels.fetch(engine.channel)].join, metadata.fetch("command", DEFAULT_COMMAND), metadata.fetch("description", "(No description available)"), memory_limit(metadata["minimum_memory_limit"]), metadata.fetch("source-library", {}), metadata.fetch("channel-versions", {}), metadata.fetch("plugin", {}), ) end rescue KeyError raise EngineDetailsNotFoundError, not_found_message(engine, channels) end
Private Instance Methods
default_memory_limit()
click to toggle source
# File lib/cc/engine_registry.rb, line 61 def default_memory_limit ENV["ENGINE_MEMORY_LIMIT_BYTES"] || DEFAULT_MEMORY_LIMIT end
memory_limit(minimum_memory_limit)
click to toggle source
# File lib/cc/engine_registry.rb, line 54 def memory_limit(minimum_memory_limit) [ minimum_memory_limit.to_i, default_memory_limit.to_i, ].max end
not_found_message(engine, available_channels)
click to toggle source
# File lib/cc/engine_registry.rb, line 65 def not_found_message(engine, available_channels) if available_channels # Known engine, unknown channel "Channel #{engine.channel} not found" \ " for #{engine.name}," \ " available channels: #{available_channels.keys.inspect}" else # Unknown engine "No engine named #{engine.name} found" end end