class Pronto::Config
def bitbucket_hostname
def bitbucket_hostname URI.parse(bitbucket_web_endpoint).host end
def consolidate_comments?
def consolidate_comments? consolidated = ENV['PRONTO_CONSOLIDATE_COMMENTS'] || @config_hash.fetch('consolidate_comments', false) consolidated end
def default_commit
def default_commit default_commit = ENV['PRONTO_DEFAULT_COMMIT'] || @config_hash.fetch('default_commit', 'master') default_commit end
def env_key(key)
def env_key(key) "PRONTO_#{key.upcase}" end
def excluded_files(runner)
def excluded_files(runner) files = if runner == 'all' ENV['PRONTO_EXCLUDE'] || @config_hash['all']['exclude'] else @config_hash.fetch(runner, {})['exclude'] end Array(files) .flat_map { |path| Dir[path.to_s] } .map { |path| File.expand_path(path) } end
def fetch_integer(key)
def fetch_integer(key) full_key = env_key(key) (ENV[full_key] && Integer(ENV[full_key])) || @config_hash[key] end
def fetch_list(key)
def fetch_list(key) Array(fetch_value(key)).flat_map do |runners| runners.split(',') end end
def fetch_value(key)
def fetch_value(key) ENV[env_key(key)] || @config_hash[key] end
def github_hostname
def github_hostname URI.parse(github_web_endpoint).host end
def github_review_type
def github_review_type review_type = ENV['PRONTO_GITHUB_REVIEW_TYPE'] || @config_hash.fetch('github_review_type', false) if review_type == 'request_changes' 'REQUEST_CHANGES' else 'COMMENT' end end
def initialize(config_hash = ConfigFile.new.to_h)
def initialize(config_hash = ConfigFile.new.to_h) @config_hash = config_hash end
def logger
def logger @logger ||= begin verbose = fetch_value('verbose') verbose ? Logger.new($stdout) : Logger.silent end end
def max_warnings
def max_warnings fetch_integer('max_warnings') end
def message_format(formatter)
def message_format(formatter) formatter_config = @config_hash[formatter] if formatter_config && formatter_config.key?('format') formatter_config['format'] else fetch_value('format') end end
def runners
def runners fetch_list('runners') end
def skip_runners
def skip_runners fetch_list('skip_runners') end
def warnings_per_review
def warnings_per_review fetch_integer('warnings_per_review') end