Pistos-emerge-gem 0.3.4 → 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README +5 -0
  2. data/lib/emerge-gem.rb +30 -14
  3. metadata +1 -1
data/README CHANGED
@@ -34,3 +34,8 @@ emerge-gem works by using the Rubygems system/library to find gem sources and
34
34
  dependencies, and to automatically create wrapper ebuilds for them. It then
35
35
  issues an emerge command. By default, it uses the local overlay. Use --help
36
36
  for CLI switches you can use to specify directories.
37
+
38
+ You should also note that if you have installed a gem via Portage in the past,
39
+ and later upgraded it with Rubygems, emerge will complain about file collisions
40
+ if you have collision-protect enabled in your /etc/make.conf. To deal with this,
41
+ uninstall the gem using Rubygems first.
data/lib/emerge-gem.rb CHANGED
@@ -7,6 +7,7 @@ class EmergeGem
7
7
  def print_usage_and_exit
8
8
  puts "#{$0} [options] <gem name> [gem name...] [-- <emerge options>]"
9
9
  puts " -h --help show usage"
10
+ puts " --no-emerge don't actually execute any emerge commands"
10
11
  puts " --portage-base-dir (default /usr/local/portage)"
11
12
  puts " --portage-path relative to portage base dir (default dev-ruby)"
12
13
  puts " --verbose print more details about work being done"
@@ -27,12 +28,15 @@ class EmergeGem
27
28
  collecting_emerge_options = true
28
29
  when '-h', '--help'
29
30
  print_usage_and_exit
31
+ when '--no-emerge'
32
+ @no_emerge = true
30
33
  when '--portage-base-dir'
31
34
  portage_base_dir = arg
32
35
  when '--portage-path'
33
36
  portage_path = arg
34
37
  when '-v', '--verbose'
35
38
  @verbose = true
39
+ puts "(verbose mode)"
36
40
  else
37
41
  if collecting_emerge_options
38
42
  @emerge_options << arg
@@ -49,8 +53,8 @@ class EmergeGem
49
53
  @ebuild_dest ||= "#{portage_base_dir}/#{portage_path}"
50
54
 
51
55
  @eix_installed = system( 'which eix > /dev/null' )
52
- if @verbose && @eix_installed
53
- puts "eix detected"
56
+ if @eix_installed
57
+ inform "eix detected"
54
58
  end
55
59
  end
56
60
 
@@ -64,18 +68,20 @@ class EmergeGem
64
68
 
65
69
  def check_local_gems
66
70
  @gems.each do |gem|
67
- next if ! EmergeGem.gem_installed?( gem ) || ! eix_installed
68
- if @verbose; puts "#{gem} gem installed"; end
71
+ inform "Checking installation of #{gem}"
72
+ next if ! EmergeGem.gem_installed?( gem ) || ! @eix_installed
73
+ inform "#{gem} gem installed"
69
74
 
70
- puts "(checking if #{gem} has been installed with Portage)"
71
75
  next if EmergeGem.package_installed? gem
72
- if @verbose; puts "#{gem} package not installed with Portage"; end
76
+ inform "#{gem} package not installed with Portage"
73
77
 
74
78
  puts "#{gem} seems to be installed via gem and not Portage."
75
79
  puts "Uninstall the #{gem} gem before emerging? [y/n]"
76
80
  answer = $stdin.gets.strip
77
81
  if answer =~ /^y/i
78
82
  shell "gem uninstall #{gem}"
83
+ else
84
+ puts "(not uninstalling #{gem} gem)"
79
85
  end
80
86
  end
81
87
  end
@@ -90,19 +96,19 @@ class EmergeGem
90
96
 
91
97
  def gather_ebuilds
92
98
  @ebuilds = {}
93
- while @gems.any?
94
- next_package = @gems.shift
99
+ gems = @gems.dup
100
+ while gems.any?
101
+ next_package = gems.shift
95
102
 
96
103
  if ! @ebuilds[ next_package ]
97
- puts "Gathering info about #{next_package}..."
104
+ inform "Gathering info about #{next_package} gem..."
98
105
  @ebuilds[ next_package ] = Ebuild.create_from_spec_lookup( next_package )
99
- else
100
- puts "(already know about #{next_package})"
101
106
  end
102
107
 
103
108
  @ebuilds[ next_package ].spec.dependencies.each do |dependency|
104
109
  next if @ebuilds[ dependency.name ]
105
- puts "Need to lookup dependency #{dependency.name}"
110
+ inform " Looking up dependency #{dependency.name}"
111
+ gems.push dependency.name
106
112
  @gems.push dependency.name
107
113
  end
108
114
  end
@@ -110,7 +116,7 @@ class EmergeGem
110
116
 
111
117
  def write_ebuilds
112
118
  @ebuilds.each do |name, ebuild|
113
- puts "Writing out #{ebuild.filename}"
119
+ inform "Writing out #{ebuild.filename}"
114
120
  ebuild.write @ebuild_dest
115
121
  end
116
122
  end
@@ -123,7 +129,12 @@ class EmergeGem
123
129
 
124
130
  def emerge
125
131
  ebuild_names = @ebuilds.values.map { |e| e.name }.join( ' ' )
126
- shell "emerge #{@emerge_options.join( ' ' )} #{ebuild_names}"
132
+ command = "emerge #{@emerge_options.join( ' ' )} #{ebuild_names}"
133
+ if @no_emerge
134
+ puts "(would execute: #{command})"
135
+ else
136
+ shell command
137
+ end
127
138
  end
128
139
 
129
140
  def shell( command )
@@ -131,5 +142,10 @@ class EmergeGem
131
142
  system( command ) or
132
143
  exit $?
133
144
  end
145
+
146
+ def inform( message )
147
+ return if ! @verbose
148
+ puts message
149
+ end
134
150
  end
135
151
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Pistos-emerge-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pistos