Class: Bling

Inherits:
Object
  • Object
show all
Defined in:
lib/bling/bling.rb

Instance Method Summary collapse

Constructor Details

#initialize(bling_file = ".gems") ⇒ Bling

Returns a new instance of Bling.

Raises:

  • (ArgumentError)

5
6
7
8
9
# File 'lib/bling/bling.rb', line 5

def initialize(bling_file = ".gems")
	raise ArgumentError, "bling file not found" unless File.exists?(bling_file)
	@yaml = YAML::load(ERB.new(File.read(bling_file)).result)
	
end

Instance Method Details

#gem_string(gem, version = nil) ⇒ Object


18
19
20
21
22
23
24
# File 'lib/bling/bling.rb', line 18

def gem_string(gem, version = nil)
	if version
		gem.to_s + " [#{version}]"
	else
		gem.to_s
	end
end

#install_gems(env = nil) ⇒ Object


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/bling/bling.rb', line 36

def install_gems(env = nil)
	only_if_present = lambda{|pre, val| val.to_s.empty? ? "" : " #{pre}#{val}"}
	gem_installed = false
	each_gem_for(env) do |entry|
		begin
			version = only_if_present.call('-v=', entry['version'].to_s.gsub(/[=~<>]/, ''))
			source = only_if_present.call('--source=', entry['source'])
			gem *([entry['name'], entry['version'].to_s].compact)
		rescue Gem::LoadError
			gem_installed = true
			$stdout.puts "installing #{entry['name']} #{version}"
			`gem install #{entry['name']} #{version} #{source} ` unless ENV['PRACTICE']
		end
	end
	$stdout.puts "nothing to install!" unless gem_installed
end

#list_gems(env = nil) ⇒ Object


26
27
28
29
30
31
32
33
34
# File 'lib/bling/bling.rb', line 26

def list_gems(env = nil)
	lines = []
	self.each_gem_for(env) do |entry|
		line = gem_string(entry['name'], entry['version'])
		lines << line
		$stdout.puts line
	end
	lines
end

#require_env(env = nil) ⇒ Object


11
12
13
14
15
16
# File 'lib/bling/bling.rb', line 11

def require_env(env = nil)
	self.each_gem_for(env) do |entry|
 		gem *([entry['name'], entry['version']].compact)
 		require entry['lib'] || entry['name']
	end
end