Sha256: 8f58787839a524f445383655d326f7d342a353d392a28d8c0d15f695277ba750

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

module Glman
  module Commands
    module Configs
      class NotifyIrcConfig
        class NotifyIrcConfigurationError < StandardError; end

        include InitRequired

        attr_required :config_manager

        DEFAULT = {
          nick:    'glman',
          channel: 'glman_notify',
          server:  'irc.freenode.net',
          port:    6697,
          ssl:     true
        }

        def set(opts={})
          raise NotifyIrcConfigurationError.new('incorrect data') unless opts.kind_of? Hash
          notify = config_manager.get[:notify] || {}
          irc    = notify[:irc] || {}

          irc[:server]  = opts[:server]  || irc[:server]  || DEFAULT[:server]
          irc[:nick]    = opts[:nick]    || irc[:nick]    || DEFAULT[:nick]
          irc[:port]    = (opts[:port]   || irc[:port]    || DEFAULT[:port]).to_i
          irc[:channel] = opts[:channel] || irc[:channel] || DEFAULT[:channel]
          irc[:ssl]     = if opts[:ssl].nil?
            irc[:ssl].nil? ? true : irc[:ssl]
          else
            opts[:ssl].to_s == 'true'
          end

          notify[:irc] = irc
          config_manager.set(notify: notify)
        end

        def get
          (config_manager.get[:notify] || {})[:irc] || DEFAULT
        end

        def clear
          set(DEFAULT)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
glman-0.1.3 lib/glman/commands/configs/notify_irc_config.rb
glman-0.1.2 lib/glman/commands/configs/notify_irc_config.rb
glman-0.1.1 lib/glman/commands/configs/notify_irc_config.rb
glman-0.1.0 lib/glman/commands/configs/notify_irc_config.rb