Sha256: 0fad6a9ffe9b2d02a18100b29fc86862427a61e08442d06f9fd0599dc6692455

Contents?: true

Size: 967 Bytes

Versions: 1

Compression:

Stored size: 967 Bytes

Contents

require 'miu/version'

module Miu
  autoload :CLI, 'miu/cli'

  class << self
    def root
      require 'pathname'
      Pathname.new(File.expand_path('../../', __FILE__))
    end

    def plugins
      @plugins ||= {}
    end

    def register(name, type, options = {}, &block)
      name = name.to_s
      usage = options[:usage] || "#{name} [COMMAND]"
      desc = options[:desc] || type.to_s

      plugins[name] = type
      Miu::CLI.register generate_subcommand(name, &block), name, usage, desc if block
    end

    private

    def generate_subcommand(name, &block)
      require 'thor'
      Class.new ::Thor do
        include ::Thor::Actions
        add_runtime_options!

        class << self
          def source_root
            Miu.root.to_s
          end

          def banner(task, namespace = nil, subcommand = true)
            super
          end
        end

        namespace name
        class_eval &block if block
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
miu-0.0.2 lib/miu.rb