Sha256: c152e385cd607f29f81db4b33d371a3af3a6dd757b9696096817603f8c65e415

Contents?: true

Size: 1.83 KB

Versions: 4

Compression:

Stored size: 1.83 KB

Contents

module Lolcommits
  class Plugin
    include Methadone::CLILogging

    attr_accessor :runner, :options

    def initialize(runner)
      debug "Initializing"
      self.runner = runner
      self.options = ['enabled']
    end

    def execute
      if is_enabled?
        debug "I am enabled, about to run"
        run
      else
        debug "Disabled, doing nothing for execution"
      end
    end

    def run
      debug "base plugin, does nothing to anything"
    end

    def configuration
      config = runner.config.read_configuration if runner
      return Hash.new unless config
      config[self.class.name] || Hash.new
    end

    # ask for plugin options
    def configure_options!
      puts "Configuring plugin: #{self.class.name}\n"
      options.inject(Hash.new) do |acc, option|
        print "#{option}: "
        val = STDIN.gets.strip.downcase
        if %w(true yes).include?(val)
          val = true
        elsif %(false no).include?(val)
          val = false
        end
        acc.merge(option => val)
      end
    end

    def is_enabled?
      configuration['enabled'] == true
    end

    # check config is valid
    def valid_configuration?
      if is_configured?
        true
      else
        puts "Missing #{self.class.name} config - configure with: lolcommits --config -p #{self.class.name}"
        false
      end
    end

    # empty plugin configuration
    def is_configured?
      !configuration.empty?
    end

    # uniform puts for plugins
    # dont puts if the runner wants to be silent (stealth mode)
    def puts(*args)
      return if runner && runner.capture_stealth
      super(args)
    end

    # uniform debug logging for plugins
    def debug(msg)
      super("Plugin: #{self.class.to_s}: " + msg)
    end

    # identifying plugin name (for config, listing)
    def self.name
      'plugin'
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
lolcommits-mpv-0.5.3 lib/lolcommits/plugin.rb
lolcommits-mpv-0.5.2 lib/lolcommits/plugin.rb
lolcommits-0.5.2 lib/lolcommits/plugin.rb
lolcommits-0.5.2.pre1 lib/lolcommits/plugin.rb