module Octospy module Configurable OPTIONS_KEYS = %i( channels server nick github_api_endpoint github_web_endpoint github_login github_token ).freeze attr_accessor(*OPTIONS_KEYS) class << self def keys @keys ||= OPTIONS_KEYS end end DEFAULT_GITHUB_API_ENDPOINT = ENV['GITHUB_API_ENDPOINT'] || 'https://api.github.com' DEFAULT_GITHUB_WEB_ENDPOINT = ENV['GITHUB_WEB_ENDPOINT'] || 'https://github.com' DEFAULT_NICK = ENV['NICK'] || 'octospy' def configure yield self end def options Hash[Octospy::Configurable.keys.map{ |key| [key, instance_variable_get(:"@#{key}")] }] end def setup @github_api_endpoint = DEFAULT_GITHUB_API_ENDPOINT @github_web_endpoint = DEFAULT_GITHUB_WEB_ENDPOINT @nick = DEFAULT_NICK @channels = if ENV['CHANNELS'] ENV['CHANNELS'].gsub(/\s|#/, '').split(',').map { |ch| "##{ch}" } else '' end @server = ENV['SERVER'] @github_login = ENV['GITHUB_LOGIN'] @github_token = ENV['GITHUB_TOKEN'] end end end