Class: Binbundle::GemList
- Inherits:
-
Object
- Object
- Binbundle::GemList
- Defined in:
- lib/binbundle/gem_list.rb
Overview
String helpers
Instance Attribute Summary collapse
-
#include_version ⇒ Object
writeonly
Sets the attribute include_version.
Instance Method Summary collapse
- #bins_for_gem(gem) ⇒ Object
- #gem_for_bin(bin) ⇒ Object
- #gem_list ⇒ Object
-
#initialize(contents, include_version: true) ⇒ GemList
constructor
A new instance of GemList.
- #normal_install ⇒ Object
- #sudo ⇒ Object
- #user_install ⇒ Object
Constructor Details
#initialize(contents, include_version: true) ⇒ GemList
Returns a new instance of GemList.
8 9 10 11 |
# File 'lib/binbundle/gem_list.rb', line 8 def initialize(contents, include_version: true) @contents = contents @include_version = include_version end |
Instance Attribute Details
#include_version=(value) ⇒ Object (writeonly)
Sets the attribute include_version
6 7 8 |
# File 'lib/binbundle/gem_list.rb', line 6 def include_version=(value) @include_version = value end |
Instance Method Details
#bins_for_gem(gem) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/binbundle/gem_list.rb', line 54 def bins_for_gem(gem) m = gem_list.select { |g| g[:gem] == gem }.first return "Gem #{gem} not found" unless m m[:bins] ? m[:bins].join("\n") : 'Missing info' end |
#gem_for_bin(bin) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/binbundle/gem_list.rb', line 47 def gem_for_bin(bin) m = gem_list.select { |gem| gem[:bins].include?(bin) }.first return "Gem for #{bin} not found" unless m m[:gem] end |
#gem_list ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/binbundle/gem_list.rb', line 13 def gem_list return @gem_list if @gem_list rx = /(?mix)(?:\#\sExecutables:\s(?<bins>[\S\s,]+?)\n)?(?:sudo\s)?gem\sinstall \s(?:--user-install\s)? (?<gem>\S+)(?:\s(?:-v|--version)\s'(?<version>[0-9.]+)')?/ @gem_list = [] @contents.to_enum(:scan, rx).map { Regexp.last_match }.each do |m| @gem_list << { gem: m['gem'], bins: m['bins']&.split(', '), version: m['version'] } end @gem_list end |
#normal_install ⇒ Object
40 41 42 43 44 45 |
# File 'lib/binbundle/gem_list.rb', line 40 def normal_install gem_list.map do |gem| version = @include_version && gem[:version] ? " -v '#{gem[:version]}'" : '' "gem install #{gem[:gem]}#{version}" end end |
#sudo ⇒ Object
26 27 28 29 30 31 |
# File 'lib/binbundle/gem_list.rb', line 26 def sudo gem_list.map do |gem| version = @include_version && gem[:version] ? " -v '#{gem[:version]}'" : '' "sudo gem install #{gem[:gem]}#{version}" end end |
#user_install ⇒ Object
33 34 35 36 37 38 |
# File 'lib/binbundle/gem_list.rb', line 33 def user_install gem_list.map do |gem| version = @include_version && gem[:version] ? " -v '#{gem[:version]}'" : '' "gem install --user-install #{gem[:gem]}#{version}" end end |