lib/rib.rb in rib-1.2.1 vs lib/rib.rb in rib-1.2.2

- old
+ new

@@ -6,10 +6,12 @@ Skip = Object.new module_function # All default Rib configs, would be passed to Shell.new in Rib.shell, # but calling Shell.new directly won't bring this in. + # + # @api public def config @config ||= {:config => File.join(home, 'config.rb'), :name => 'rib'} end # All shells in the memory @@ -20,62 +22,84 @@ # All shared variables for all shells def vars @vars ||= {} end - # Rib.home is where Rib storing things + # Rib.home is where Rib storing things. By default, it goes to '~/.rib', + # or somewhere containing a 'config.rb' or 'history.rb' in the order of + # './.rib' (project specific config), or '~/.rib' (home config), or + # '~/.config/rib' (home config, residing in ~/.config) + # + # @api public def home ENV['RIB_HOME'] ||= begin - ['~/.rib', '~/.config/rib'].find{ |path| + ['./.rib', '~/.rib', '~/.config/rib'].find{ |path| p = File.expand_path(path) File.exist?(File.join(p, 'config.rb')) || File.exist?(File.join(p, 'history.rb')) } || '~/.rib' end end # Convenient shell accessor, which would just give you current last shell - # or create one and load ~/.config/rib/config.rb if non has existed. If you - # need a clean shell which does not load rc file, use Shell.new instead. + # or create one and load the config file. If you need a clean shell which + # does not load config file, use Shell.new instead. + # + # @api public def shell shells.last || begin require_config if config_path (shells << Shell.new(config)).last end end # All plugins which have been loaded into the memory regardless # it's enabled or not. + # + # @api public def plugins Shell.ancestors[1..-1].select{ |a| a.singleton_class < Plugin } end # Convenient way to disable all plugins in the memory. # This could also take a list of plugins and disable them. + # + # @api public + # @param plugs [Array] (Rib.plugins) Plugins which would be disabled. def disable_plugins plugs=plugins plugs.each(&:disable) end # Convenient way to enable all plugins in the memory. # This could also take a list of plugins and enable them. + # + # @api public + # @param plugs [Array] (Rib.plugins) Plugins which would be enabled. def enable_plugins plugs=plugins plugs.each(&:enable) end - # Load (actually require) ~/.config/rib/config.rb if exists. + # Load (actually require) the config file if it exists. # This might emit warnings if there's some error while loading it. + # + # @api public def require_config return unless config_path result = require(config_path) Rib.say("Config loaded from: #{config_path}") if $VERBOSE && result result rescue StandardError, LoadError, SyntaxError => e Rib.warn("Error loading #{config[:config]}\n" \ " #{Rib::API.format_error(e)}") end - # The config path where Rib tries to load upon Rib.shell + # The config path where Rib tries to load upon Rib.shell or + # Rib.require_config. It is depending on where Rib.home was discovered + # if no specific config path was specified via -c or --config command + # line option. See also Rib.config. + # + # @api public def config_path return nil unless config[:config] path = File.expand_path(config[:config]) if File.exist?(path) path @@ -83,22 +107,31 @@ nil end end # Say (print to $stdout, with colors in the future, maybe) - # something by the name of Rib + # something by the name of Rib. + # + # @api public + # @param words [Array[String]] Words you want to say. def say *words $stdout.puts(Rib.prepare(words)) end # Warn (print to $stderr, with colors in the future, maybe) - # something by the name of Rib + # something by the name of Rib. + # + # @api public + # @param words [Array[String]] Words you want to warn. def warn *words $stderr.puts(Rib.prepare(words)) end # Warn (print to $stderr, with colors in the future, maybe) - # something by the name of Rib and then exit(1) + # something by the name of Rib and then exit(1). + # + # @api public + # @param words [Array[String]] Words you want to warn before aborting. def abort *words warn(words) exit(1) end