Sha256: 6e9c7aacd88c49d2ee3831295fd17169613c641608862bd63b8817faf022d7ff

Contents?: true

Size: 1.37 KB

Versions: 2

Compression:

Stored size: 1.37 KB

Contents

require "optparse"
require "lapidarius/version"
require "lapidarius/cutter"
require "lapidarius/renderer"

module Lapidarius
  class CLI
    def initialize(args, io = STDOUT)
      @args = args
      @io = io
      @gem = nil
      @recursive = nil
    end

    def call(cmd_klass = Command)
      parser.parse!(@args)
      return @io.puts("specify gem name as: '-g gem_name'") unless @gem
      gem = cutter(cmd_klass).call
      renderer(gem).call(@io)
    rescue Gem::NotInstalledError => e
      @io.puts e.message.sub("specified", @gem)
    end

    private def parser
      OptionParser.new do |opts|
        opts.banner = "Usage: ./bin/lapidarius --gem=sinatra --recursive"

        opts.on("-gGEM", "--gem=GEM", "The gem name to scan") do |gem|
          @gem = gem
        end

        opts.on("-r", "--recursive", "Print dependencies recursively") do |recursive|
          @recursive = recursive
        end

        opts.on("-v", "--version", "Print library version") do
          @io.puts VERSION
          exit
        end
        
        opts.on("-h", "--help", "Prints this help") do
          @io.puts opts
          exit
        end
      end
    end

    private def cutter(cmd_klass)
      @cutter = Lapidarius::Cutter.new(gem: @gem, cmd_klass: cmd_klass)
    end

    private def renderer(gem)
      Lapidarius::Renderer::new(gem: gem, recursive: @recursive)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lapidarius-1.1.4 lib/lapidarius/cli.rb
lapidarius-1.1.3 lib/lapidarius/cli.rb