Sha256: c17c1b2d2de8c05754773590e723dd7fbb283f681ca11fa2befd5abe6c8ce57a

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
octospy-0.0.2 lib/octospy/configurable.rb
octospy-0.0.1 lib/octospy/configurable.rb