Sha256: 6097d03c5967f5beaa7f073bc589dca1f8ebd40941380f524317d01f27841965

Contents?: true

Size: 1.77 KB

Versions: 4

Compression:

Stored size: 1.77 KB

Contents

require 'thor'

module CompareLinkerWrapper
  class CLI < Thor
    def self.exit_on_failure?
      true
    end

    desc 'version', 'Show the CompareLinkerWrapper version'
    map %w(-v --version) => :version

    def version
      puts "CompareLinkerWrapper version #{::CompareLinkerWrapper::VERSION}"
    end

    desc 'compare', 'compare gemfile.lock'
    option :debug, type: :boolean, default: false
    option :verbose, type: :boolean, default: false
    option :base, type: :string, default: 'origin/master'
    option :head, type: :string, default: 'HEAD'
    option :file, type: :array
    option :formatter, type: :string, default: 'CompareLinker::Formatter::Text'

    def compare(*args)
      setup_logger(options)
      params = {
        head: options[:head],
        base: options[:base],
        formatter: options[:formatter]
      }
      if options[:file]
        params[:file] = options[:file]
      else
        params[:file] = args
      end
      puts Linker.new('.').link(params)
    rescue StandardError => e
      suggest_messages(options)
      raise e
    end
    default_command :compare

    no_commands do
      def logger
        ::CompareLinkerWrapper.logger
      end

      def setup_logger(options)
        if options[:debug]
          logger.level = Logger::DEBUG
        elsif options[:verbose]
          logger.level = Logger::INFO
        end
        logger.debug(options)
      end

      def suggest_messages(options)
        logger.error 'Have a question? Please ask us:'
        logger.error ISSUE_URL
        logger.error 'options:'
        logger.error options
      end

      # http://stackoverflow.com/a/23955971/104080
      def method_missing(method, *args)
        self.class.start([self.class.default_command, method.to_s] + args)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
compare_linker_wrapper-1.0.2 lib/compare_linker_wrapper/cli.rb
compare_linker_wrapper-1.0.1 lib/compare_linker_wrapper/cli.rb
compare_linker_wrapper-1.0.0 lib/compare_linker_wrapper/cli.rb
compare_linker_wrapper-0.1.0 lib/compare_linker_wrapper/cli.rb