module Lux::Config::Plugin

Public Instance Methods

folders(namespace=:main) click to toggle source

get all folders in a namespace

# File lib/lux/config/lib/plugin.rb, line 57
def folders namespace=:main
  name = name.to_sym

  list = @plugins.values
  list.select { |it| it.namespace.include?(namespace) }
  list.map { |it| it.folder }
end
get(name) click to toggle source
# File lib/lux/config/lib/plugin.rb, line 40
def get name
  @plugins[name.to_s] || die('Plugin "%s" not loaded' % name)
end
keys() click to toggle source
# File lib/lux/config/lib/plugin.rb, line 48
def keys
  @plugins.keys
end
load(arg) click to toggle source

load specific plugin Lux.plugin :foo Lux.plugin 'foo/bar' Lux.plugin.folders

# File lib/lux/config/lib/plugin.rb, line 10
def load arg
  arg = arg.to_s if arg.is_a?(Symbol)

  if arg.is_a?(String)
    arg = arg.include?('/') ? { folder: arg } : { name: arg }
  end

  opts           = arg.to_opts name: String, folder: String, namespace: Symbol
  opts.name    ||= opts.folder.split('/').last
  opts.name      = opts.name.to_s
  opts.folder  ||= Lux.fw_root.join('plugins', opts.name).to_s
  opts.namespace = [opts.namespace] unless opts.namespace.is_a?(Array)

  return @plugins[opts.name] if @plugins[opts.name]

  die(%{Plugin "#{opts.name}" not found in "#{opts.folder}"}) unless Dir.exist?(opts.folder)

  @plugins[opts.name] ||= opts

  base = Pathname.new(opts.folder).join(opts.name, '.rb')

  if base.exist?
    require base.to_s
  else
    Lux::Config.require_all(opts.folder)
  end

  @plugins[opts.name]
end
loaded() click to toggle source
# File lib/lux/config/lib/plugin.rb, line 44
def loaded
   @plugins.values
end
plugins() click to toggle source
# File lib/lux/config/lib/plugin.rb, line 52
def plugins
  @plugins
end