Pistos-emerge-gem 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/emerge-gem.rb +38 -15
- metadata +1 -1
data/lib/emerge-gem.rb
CHANGED
@@ -18,7 +18,7 @@ class EmergeGem
|
|
18
18
|
@gems = []
|
19
19
|
@emerge_options = []
|
20
20
|
portage_base_dir = '/usr/local/portage'
|
21
|
-
portage_path = 'dev-ruby'
|
21
|
+
@portage_path = 'dev-ruby'
|
22
22
|
|
23
23
|
collecting_emerge_options = false
|
24
24
|
while argv.any?
|
@@ -33,7 +33,7 @@ class EmergeGem
|
|
33
33
|
when '--portage-base-dir'
|
34
34
|
portage_base_dir = arg
|
35
35
|
when '--portage-path'
|
36
|
-
portage_path = arg
|
36
|
+
@portage_path = arg
|
37
37
|
when '-v', '--verbose'
|
38
38
|
@verbose = true
|
39
39
|
puts "(verbose mode)"
|
@@ -50,7 +50,7 @@ class EmergeGem
|
|
50
50
|
print_usage_and_exit
|
51
51
|
end
|
52
52
|
|
53
|
-
@ebuild_dest ||= "#{portage_base_dir}/#{portage_path}"
|
53
|
+
@ebuild_dest ||= "#{portage_base_dir}/#{@portage_path}"
|
54
54
|
|
55
55
|
@eix_installed = system( 'which eix > /dev/null' )
|
56
56
|
if @eix_installed
|
@@ -67,27 +67,50 @@ class EmergeGem
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def check_local_gems
|
70
|
+
return if ! @eix_installed
|
70
71
|
@gems.each do |gem|
|
71
72
|
inform "Checking installation of #{gem}"
|
72
|
-
|
73
|
+
gem_versions = EmergeGem.gem_versions_installed( gem )
|
74
|
+
next if gem_versions.empty?
|
73
75
|
inform "#{gem} gem installed"
|
74
76
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
77
|
+
package_version = EmergeGem.portage_version_installed( gem )
|
78
|
+
if package_version
|
79
|
+
next if gem_versions.include?( package_version )
|
80
|
+
|
81
|
+
puts "Portage version of #{gem} is #{package_version} but Rubygems reports version(s):"
|
82
|
+
puts gem_versions.join( ', ' )
|
83
|
+
puts "Sync Rubygem installation with Portage's version? [y/n]"
|
84
|
+
answer = $stdin.gets.strip
|
85
|
+
if answer =~ /^y/i
|
86
|
+
shell "gem uninstall -a -x -I #{gem}"
|
87
|
+
shell "gem install -v #{package_version} #{gem}"
|
88
|
+
else
|
89
|
+
puts "(retaining differing gem installation of #{gem})"
|
90
|
+
end
|
83
91
|
else
|
84
|
-
puts "
|
92
|
+
puts "#{gem} seems to be installed via gem and not Portage."
|
93
|
+
puts "Uninstall the #{gem} gem before emerging? [y/n]"
|
94
|
+
answer = $stdin.gets.strip
|
95
|
+
if answer =~ /^y/i
|
96
|
+
shell "gem uninstall #{gem}"
|
97
|
+
else
|
98
|
+
puts "(not uninstalling #{gem} gem)"
|
99
|
+
end
|
85
100
|
end
|
86
101
|
end
|
87
102
|
end
|
88
103
|
|
104
|
+
def self.gem_versions_installed( gem_name )
|
105
|
+
Gem.source_index.find_name( gem_name ).map { |gem| gem.version.to_s }
|
106
|
+
end
|
107
|
+
|
89
108
|
def self.gem_installed?( gem_name )
|
90
|
-
|
109
|
+
gem_versions_installed( gem_name ).any?
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.portage_version_installed( gem_name )
|
113
|
+
`eix -Ien* --format '<installedversionsshort>' #{gem_name}`[ /([0-9.]+)/, 1 ]
|
91
114
|
end
|
92
115
|
|
93
116
|
def self.package_installed?( package_name )
|
@@ -128,7 +151,7 @@ class EmergeGem
|
|
128
151
|
end
|
129
152
|
|
130
153
|
def emerge
|
131
|
-
ebuild_names = @ebuilds.values.map { |e| e.name }.join( ' ' )
|
154
|
+
ebuild_names = @ebuilds.values.map { |e| "#{@portage_path}/#{e.name}" }.join( ' ' )
|
132
155
|
command = "emerge #{@emerge_options.join( ' ' )} #{ebuild_names}"
|
133
156
|
if @no_emerge
|
134
157
|
puts "(would execute: #{command})"
|