Sha256: 77762a58e07477a7fb714bebea92f7e703a1012f036fdc861e3feab6ee10de6a

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

# -*- encoding: utf-8 -*-

module TTY

  # A class responsible for plugin loading
  class Plugin

    attr_reader :name

    attr_reader :gem

    attr_reader :gem_name

    attr_accessor :enabled

    # Initialize a Plugin
    #
    # @param [String] name
    #   the plugin name
    #
    # @param [Gem::Specification] gem
    #   the rubygems gem
    #
    # @api public
    def initialize(name, gem)
      @name     = name
      @gem      = gem
      @gem_name = "tty-#{name}"
      @enabled  = false
    end

    # Check if this plugin has been enabled
    #
    # @return [Boolean]
    #
    # @api public
    def enabled?
      !!enabled
    end

    # Load the plugin (require the gem)
    #
    # @api public
    def load!
      begin
        require gem_name unless enabled?
      rescue LoadError => error
        TTY.shell.error("Unable to load plugin #{gem_name}.")
      rescue => error
        TTY.shell.error("require '#{gem_name}' failed with #{error}")
      end
      self.enabled = true
    end

  end # Plugin
end # TTY

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tty-0.0.11 lib/tty/plugins/plugin.rb
tty-0.0.10 lib/tty/plugins/plugin.rb