Sha256: af8e85a4bbf466090d555ac4dba408575e6aab33ded480aadb7f9ef665e32214
Contents?: true
Size: 1013 Bytes
Versions: 1
Compression:
Stored size: 1013 Bytes
Contents
# frozen_string_literal: true require "dry/monads" module Gemsmith module Gems # Picks a gem specification. class Picker include Dry::Monads[:result] def self.call(name, ...) = new(...).call name def initialize finder: Finder.new, kernel: Kernel @finder = finder @kernel = kernel end def call name specifications = finder.call name case specifications.size when 1 then Success specifications.first when 2.. then Success choose(specifications) else Failure "Unknown gem or gem is not installed: #{name}." end end def choose specifications specifications.each.with_index 1 do |specification, index| kernel.puts "#{index}. #{specification.named_version}" end kernel.puts "\nPlease enter gem selection:" ARGV.clear specifications[kernel.gets.chomp.to_i - 1] end private attr_reader :finder, :kernel end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gemsmith-16.0.0 | lib/gemsmith/gems/picker.rb |