Module: Lux::Config::Plugin

Extended by:
Plugin
Included in:
Plugin
Defined in:
lib/lux/config/lib/plugin.rb

Instance Method Summary collapse

Instance Method Details

#folders(namespace = :main) ⇒ Object

get all folders in a namespace



57
58
59
60
61
62
63
# 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) ⇒ Object



40
41
42
# File 'lib/lux/config/lib/plugin.rb', line 40

def get name
  @plugins[name.to_s] || die('Plugin "%s" not loaded' % name)
end

#keysObject



48
49
50
# File 'lib/lux/config/lib/plugin.rb', line 48

def keys
  @plugins.keys
end

#load(arg) ⇒ Object

load specific plugin Lux.plugin :foo Lux.plugin ‘foo/bar’ Lux.plugin.folders



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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

#loadedObject



44
45
46
# File 'lib/lux/config/lib/plugin.rb', line 44

def loaded
   @plugins.values
end

#pluginsObject



52
53
54
# File 'lib/lux/config/lib/plugin.rb', line 52

def plugins
  @plugins
end