require "magellan/cli"

require 'thor'

module Magellan
  module Cli
    class Base < Thor
      class_option :verbose, type: :boolean, aliases: "-V"
      class_option :dryrun , type: :boolean, aliases: "-D"

      no_commands do

        def sub(klass)
          task = klass.new
          task.options = self.options
          task
        end

        def opts
          @opts ||= options || {}
        end

        def dryrun?
          opts[:dryrun]
        end

        def verbose?
          opts[:verbose]
        end

        def verbose(msg)
          $stderr.puts("\e[34m#{msg}\e[0m") if verbose?
        end

        def info(msg)
          $stderr.puts(msg)
        end
        def success(msg)
          $stderr.puts("\e[32m#{msg}\e[0m")
        end

        def error(msg)
          raise Cli::Error, msg
        end
      end

    end
  end
end