gem_tools 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +1 -5
- data/README.txt +1 -5
- data/VERSION +1 -1
- data/config/gems.yml +20 -163
- data/gem_tools.gemspec +2 -2
- data/lib/gem_tools.rb +84 -107
- metadata +2 -2
data/README.textile
CHANGED
|
@@ -7,10 +7,6 @@ similar to GemInstaller.
|
|
|
7
7
|
|
|
8
8
|
My blog post on why "I prefer GemTools over config:gem":http://underpantsgnome.com/2009/4/8/i-prefer-gemtools-over-config-gem
|
|
9
9
|
|
|
10
|
-
h2. FEATURES/PROBLEMS:
|
|
11
|
-
|
|
12
|
-
Doesn't yet work in Windows
|
|
13
|
-
|
|
14
10
|
h2. SYNOPSIS:
|
|
15
11
|
|
|
16
12
|
I use this to manage gem versions in my apps, it has a script to install gems
|
|
@@ -44,7 +40,7 @@ See the "sample config":http://github.com/UnderpantsGnome/gem_tools/blob/master/
|
|
|
44
40
|
|
|
45
41
|
h2. INSTALL:
|
|
46
42
|
|
|
47
|
-
sudo gem install gem_tools
|
|
43
|
+
[sudo] gem install gem_tools
|
|
48
44
|
|
|
49
45
|
h2. TODO
|
|
50
46
|
|
data/README.txt
CHANGED
|
@@ -7,10 +7,6 @@ similar to GemInstaller.
|
|
|
7
7
|
|
|
8
8
|
My blog post on why "I prefer GemTools over config:gem":http://underpantsgnome.com/2009/4/8/i-prefer-gemtools-over-config-gem
|
|
9
9
|
|
|
10
|
-
h2. FEATURES/PROBLEMS:
|
|
11
|
-
|
|
12
|
-
Doesn't yet work in Windows
|
|
13
|
-
|
|
14
10
|
h2. SYNOPSIS:
|
|
15
11
|
|
|
16
12
|
I use this to manage gem versions in my apps, it has a script to install gems
|
|
@@ -44,7 +40,7 @@ See the "sample config":http://github.com/UnderpantsGnome/gem_tools/blob/master/
|
|
|
44
40
|
|
|
45
41
|
h2. INSTALL:
|
|
46
42
|
|
|
47
|
-
sudo gem install gem_tools
|
|
43
|
+
[sudo] gem install gem_tools
|
|
48
44
|
|
|
49
45
|
h2. TODO
|
|
50
46
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.6
|
data/config/gems.yml
CHANGED
|
@@ -1,164 +1,21 @@
|
|
|
1
|
+
# this is optional
|
|
2
|
+
# source: http://local_mirror.example.com
|
|
3
|
+
# gem_command: 'jruby -S gem'
|
|
1
4
|
gems:
|
|
2
|
-
- name:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- name:
|
|
6
|
-
version:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- name: 'httparty'
|
|
21
|
-
version: '0.5.0'
|
|
22
|
-
|
|
23
|
-
- name: 'newrelic_rpm'
|
|
24
|
-
version: '2.9.5'
|
|
25
|
-
|
|
26
|
-
- name: 'parseexcel'
|
|
27
|
-
version: '0.5.2'
|
|
28
|
-
|
|
29
|
-
- name: 'prawn'
|
|
30
|
-
version: '0.5.0.1'
|
|
31
|
-
|
|
32
|
-
- name: 'prawn-core'
|
|
33
|
-
version: '0.5.0.1'
|
|
34
|
-
|
|
35
|
-
- name: 'prawn-layout'
|
|
36
|
-
version: '0.2.0.1'
|
|
37
|
-
|
|
38
|
-
- name: 'rails'
|
|
39
|
-
version: '2.2.2'
|
|
40
|
-
|
|
41
|
-
- name: 'roo'
|
|
42
|
-
version: '1.2.3'
|
|
43
|
-
|
|
44
|
-
- name: 'rubaidh-google_analytics'
|
|
45
|
-
version: '1.1.4'
|
|
46
|
-
require_name: 'rubaidh/google_analytics'
|
|
47
|
-
source: 'http://gems.github.com/'
|
|
48
|
-
|
|
49
|
-
- name: 'aasm'
|
|
50
|
-
version: '2.0.5'
|
|
51
|
-
|
|
52
|
-
- name: 'rubyzip'
|
|
53
|
-
version: '0.9.1'
|
|
54
|
-
require_name: 'zip/zipfilesystem'
|
|
55
|
-
|
|
56
|
-
- name: 'serviceproxy'
|
|
57
|
-
version: '0.2.1'
|
|
58
|
-
|
|
59
|
-
- name: 'settingslogic'
|
|
60
|
-
version: '2.0.3'
|
|
61
|
-
|
|
62
|
-
- name: 'spreadsheet-excel'
|
|
63
|
-
version: '0.3.5.1'
|
|
64
|
-
require_name: 'spreadsheet/excel'
|
|
65
|
-
|
|
66
|
-
- name: 'thoughtbot-paperclip'
|
|
67
|
-
version: '2.2.7'
|
|
68
|
-
require_name: 'paperclip'
|
|
69
|
-
|
|
70
|
-
- name: 'will_paginate'
|
|
71
|
-
version: '2.2.2'
|
|
72
|
-
|
|
73
|
-
- name: 'inaction_mailer'
|
|
74
|
-
version: '0.6'
|
|
75
|
-
load: false
|
|
76
|
-
|
|
77
|
-
- name: 'capistrano-ext'
|
|
78
|
-
version: '1.2.1'
|
|
79
|
-
load: false
|
|
80
|
-
|
|
81
|
-
- name: 'chronic'
|
|
82
|
-
version: '0.2.3'
|
|
83
|
-
load: false
|
|
84
|
-
|
|
85
|
-
- name: 'whenever'
|
|
86
|
-
version: '0.3.7'
|
|
87
|
-
load: false
|
|
88
|
-
|
|
89
|
-
- name: 'soap4r'
|
|
90
|
-
version: '1.5.8'
|
|
91
|
-
load: false
|
|
92
|
-
|
|
93
|
-
- name: 'crack'
|
|
94
|
-
version: '0.1.4'
|
|
95
|
-
load: false
|
|
96
|
-
|
|
97
|
-
- name: 'ruby-debug'
|
|
98
|
-
version: '0.10.3'
|
|
99
|
-
load: false
|
|
100
|
-
|
|
101
|
-
- name: 'cucumber'
|
|
102
|
-
version: '0.6.2'
|
|
103
|
-
load: false
|
|
104
|
-
|
|
105
|
-
- name: 'cucumber-rails'
|
|
106
|
-
version: '0.2.4'
|
|
107
|
-
load: false
|
|
108
|
-
|
|
109
|
-
- name: 'database_cleaner'
|
|
110
|
-
version: '0.4.3'
|
|
111
|
-
load: false
|
|
112
|
-
|
|
113
|
-
- name: 'webrat'
|
|
114
|
-
version: '0.7.0'
|
|
115
|
-
load: false
|
|
116
|
-
|
|
117
|
-
- name: 'rspec'
|
|
118
|
-
version: '1.3.0'
|
|
119
|
-
load: false
|
|
120
|
-
|
|
121
|
-
- name: 'rspec-rails'
|
|
122
|
-
version: '1.3.2'
|
|
123
|
-
load: false
|
|
124
|
-
|
|
125
|
-
- name: 'launchy'
|
|
126
|
-
version: '0.3.5'
|
|
127
|
-
load: false
|
|
128
|
-
|
|
129
|
-
- name: 'mocha'
|
|
130
|
-
version: '0.9.5'
|
|
131
|
-
load: false
|
|
132
|
-
|
|
133
|
-
- name: 'machinist'
|
|
134
|
-
version: '1.0.6'
|
|
135
|
-
load: false
|
|
136
|
-
|
|
137
|
-
- name: 'shoulda'
|
|
138
|
-
version: '2.9.1'
|
|
139
|
-
load: false
|
|
140
|
-
|
|
141
|
-
- name: 'xml-simple'
|
|
142
|
-
version: '1.0.12'
|
|
143
|
-
load: false
|
|
144
|
-
|
|
145
|
-
- name: 'memcache'
|
|
146
|
-
version: '1.2.0'
|
|
147
|
-
load: false
|
|
148
|
-
|
|
149
|
-
- name: 'tzinfo'
|
|
150
|
-
version: '0.3.16'
|
|
151
|
-
load: false
|
|
152
|
-
|
|
153
|
-
- name: 'tmail'
|
|
154
|
-
version: '1.2.7.1'
|
|
155
|
-
load: false
|
|
156
|
-
|
|
157
|
-
- name: 'text-format'
|
|
158
|
-
version: '1.0.0'
|
|
159
|
-
load: false
|
|
160
|
-
|
|
161
|
-
- name: 'cwninja-inaction_mailer'
|
|
162
|
-
version: '0.6'
|
|
163
|
-
require_name: 'inaction_mailer'
|
|
164
|
-
load: false
|
|
5
|
+
- name: rake
|
|
6
|
+
load: true
|
|
7
|
+
version: >=0.7.3
|
|
8
|
+
- name: foo_gem
|
|
9
|
+
version: 0.0.1
|
|
10
|
+
load: true
|
|
11
|
+
# - name: postgres
|
|
12
|
+
# # the version to use
|
|
13
|
+
# version: '0.7.1'
|
|
14
|
+
# # this gem has a specfic source URL
|
|
15
|
+
# source: 'http://mongrel.rubyforge.org/releases'
|
|
16
|
+
# # this tells us to load not just install
|
|
17
|
+
# load: true
|
|
18
|
+
# # any extra config that needs to be passed to gem install
|
|
19
|
+
# config: '--with-pgsql-include-dir=/usr/local/pgsql/include --with-pgsql-lib-dir=/usr/local/pgsql/lib'
|
|
20
|
+
# # if the require name is different than the gem name
|
|
21
|
+
# require_name: foo-bar
|
data/gem_tools.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{gem_tools}
|
|
8
|
-
s.version = "0.2.
|
|
8
|
+
s.version = "0.2.6"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Michael Moen"]
|
|
12
|
-
s.date = %q{2010-02-
|
|
12
|
+
s.date = %q{2010-02-19}
|
|
13
13
|
s.default_executable = %q{gemtools}
|
|
14
14
|
s.description = %q{A lightweight tool to manage gems using a config file, similar to GemInstaller}
|
|
15
15
|
s.email = %q{michael@underpantsgnome.com}
|
data/lib/gem_tools.rb
CHANGED
|
@@ -2,7 +2,6 @@ $:.unshift(File.dirname(__FILE__)) unless
|
|
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
3
|
|
|
4
4
|
require 'rubygems'
|
|
5
|
-
require 'ruby-debug'
|
|
6
5
|
|
|
7
6
|
module GemTools
|
|
8
7
|
extend self
|
|
@@ -11,6 +10,10 @@ module GemTools
|
|
|
11
10
|
send(cmd.to_sym) rescue help
|
|
12
11
|
end
|
|
13
12
|
|
|
13
|
+
def help
|
|
14
|
+
puts OPTS
|
|
15
|
+
end
|
|
16
|
+
|
|
14
17
|
def setup
|
|
15
18
|
require 'fileutils'
|
|
16
19
|
dest_file = File.join(ARGV[1], '/config/gems.yml')
|
|
@@ -23,28 +26,21 @@ module GemTools
|
|
|
23
26
|
end
|
|
24
27
|
end
|
|
25
28
|
|
|
26
|
-
def
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if defined?(gem)
|
|
32
|
-
gem gem_info['name'], gem_info['version']
|
|
33
|
-
else
|
|
34
|
-
require_gem gem_info['name'], gem_info['version']
|
|
35
|
-
end
|
|
36
|
-
require gem_info['require_name'] || gem_info['name']
|
|
37
|
-
end
|
|
29
|
+
def install
|
|
30
|
+
commands.each do |command|
|
|
31
|
+
ret = system command
|
|
32
|
+
# something bad happened, pass on the message
|
|
33
|
+
p $? unless ret
|
|
38
34
|
end
|
|
39
35
|
end
|
|
40
36
|
|
|
41
|
-
def
|
|
42
|
-
puts
|
|
37
|
+
def dryrun
|
|
38
|
+
puts "\n#{commands.join("\n")}\n\n"
|
|
43
39
|
end
|
|
44
40
|
|
|
45
41
|
def to_gemfile
|
|
46
42
|
config = load_config
|
|
47
|
-
|
|
43
|
+
|
|
48
44
|
if File.exist?('Gemfile')
|
|
49
45
|
puts "GemFile already exists, not overwriting."
|
|
50
46
|
exit 1
|
|
@@ -77,114 +73,95 @@ module GemTools
|
|
|
77
73
|
end
|
|
78
74
|
end
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
require 'yaml'
|
|
82
|
-
require 'erb'
|
|
83
|
-
config_file = find_config
|
|
84
|
-
unless config_file
|
|
85
|
-
puts 'Could not find a gems.yml, checked . and ./config'
|
|
86
|
-
exit 1
|
|
87
|
-
end
|
|
88
|
-
YAML.load(ERB.new(File.open(config_file).read).result)
|
|
89
|
-
end
|
|
76
|
+
private
|
|
90
77
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
78
|
+
def load_gems
|
|
79
|
+
config = load_config
|
|
80
|
+
unless config['gems'].nil?
|
|
81
|
+
gems = config['gems'].reject {|gem_info| ! gem_info['load'] }
|
|
82
|
+
gems.each do |gem_info|
|
|
83
|
+
if defined?(gem)
|
|
84
|
+
gem gem_info['name'], gem_info['version']
|
|
85
|
+
else
|
|
86
|
+
require_gem gem_info['name'], gem_info['version']
|
|
87
|
+
end
|
|
88
|
+
require gem_info['require_name'] || gem_info['name']
|
|
89
|
+
end
|
|
102
90
|
end
|
|
103
91
|
end
|
|
104
|
-
end
|
|
105
92
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
commands = []
|
|
114
|
-
|
|
115
|
-
unless gems.nil?
|
|
116
|
-
docs = ''
|
|
117
|
-
unless OPTIONS.has_key?(:docs)
|
|
118
|
-
docs << '--no-rdoc ' unless (`rdoc --version 2> /dev/null`).nil?
|
|
119
|
-
docs << '--no-ri ' unless (`ri --version 2> /dev/null`).nil?
|
|
93
|
+
def load_config
|
|
94
|
+
require 'yaml'
|
|
95
|
+
require 'erb'
|
|
96
|
+
config_file = find_config
|
|
97
|
+
unless config_file
|
|
98
|
+
puts 'Could not find a gems.yml, checked . and ./config'
|
|
99
|
+
exit 1
|
|
120
100
|
end
|
|
101
|
+
YAML.load(ERB.new(File.open(config_file).read).result)
|
|
102
|
+
end
|
|
121
103
|
|
|
122
|
-
|
|
123
|
-
|
|
104
|
+
def commands
|
|
105
|
+
config = load_config
|
|
106
|
+
gems = config['gems']
|
|
107
|
+
commands = []
|
|
124
108
|
|
|
125
|
-
gems.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
109
|
+
unless gems.nil?
|
|
110
|
+
docs = ''
|
|
111
|
+
unless OPTIONS.has_key?(:docs) || RUBY_PLATFORM =~ /(win|mingw)/i
|
|
112
|
+
docs << '--no-rdoc ' unless (`rdoc --version 2> /dev/null`).nil?
|
|
113
|
+
docs << '--no-ri ' unless (`ri --version 2> /dev/null`).nil?
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
gem_command = config['gem_command'] || 'gem'
|
|
117
|
+
gem_dash_y = "1.0" > Gem::RubyGemsVersion ? '-y' : ''
|
|
118
|
+
|
|
119
|
+
gems.each do |gem|
|
|
120
|
+
meets_reqs =
|
|
121
|
+
|
|
122
|
+
# if forced
|
|
123
|
+
# or the installed gems don't meet requirements
|
|
124
|
+
if OPTIONS.has_key?(:force) || meets_requirements?(gem['name'], gem['version'])
|
|
125
|
+
gem_config = gem['config'] ? " -- #{gem['config']}" : ''
|
|
126
|
+
source = gem['source'] || config['source'] || nil
|
|
127
|
+
source = "--source #{source}" if source
|
|
128
|
+
cmd = "#{gem_command} install #{gem['path'] || gem['name']} -v #{gem['version']} #{gem_dash_y} #{source} #{docs} #{gem_config}"
|
|
129
|
+
commands << cmd
|
|
130
|
+
else
|
|
131
|
+
puts "#{gem['name']} #{gem['version']} already installed"
|
|
132
|
+
end
|
|
139
133
|
end
|
|
140
134
|
end
|
|
135
|
+
commands
|
|
141
136
|
end
|
|
142
|
-
commands
|
|
143
|
-
end
|
|
144
137
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
loaded = defined?(gem) ? gem(name, version) : require_gem(name, version)
|
|
152
|
-
version = spec.version.version
|
|
153
|
-
rescue Exception => e
|
|
154
|
-
# puts e
|
|
138
|
+
def find_config
|
|
139
|
+
%w( . config ).each do |dir|
|
|
140
|
+
config_file = File.join(dir, 'gems.yml')
|
|
141
|
+
return config_file if File.exist?(config_file)
|
|
142
|
+
end
|
|
143
|
+
nil
|
|
155
144
|
end
|
|
156
|
-
[spec, loaded, version]
|
|
157
|
-
end
|
|
158
145
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return config_file if File.exist?(config_file)
|
|
146
|
+
def meets_requirements?(name, version)
|
|
147
|
+
@specs ||= Gem::SourceIndex.from_installed_gems
|
|
148
|
+
@specs.find_name(name, Gem::Requirement.new(version)).empty?
|
|
163
149
|
end
|
|
164
|
-
nil
|
|
165
|
-
end
|
|
166
150
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
end
|
|
151
|
+
def check_updates
|
|
152
|
+
config = load_config
|
|
153
|
+
gems = config['gems']
|
|
171
154
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
out = `gem list -r #{gem['name']} #{source}`
|
|
181
|
-
ver = out.match(/\(([0-9\.]+)/)[1] #rescue 0
|
|
182
|
-
puts "#{gem['name']} #{ver} is available, #{gem['version']} installed" if ver > gem['version']
|
|
155
|
+
gems.each do |gem|
|
|
156
|
+
source = gem['source'] || config['source'] || nil
|
|
157
|
+
source = "--source #{source}" if source
|
|
158
|
+
# puts "Checking #{gem['name']}"
|
|
159
|
+
out = `gem list -r #{gem['name']} #{source}`
|
|
160
|
+
ver = out.match(/\(([0-9\.]+)/)[1] #rescue 0
|
|
161
|
+
puts "#{gem['name']} #{ver} is available, #{gem['version']} installed" if ver > gem['version']
|
|
162
|
+
end
|
|
183
163
|
end
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
private
|
|
187
|
-
|
|
164
|
+
|
|
188
165
|
def bundler_gem_line(gem)
|
|
189
166
|
line = "gem '#{gem['name']}', '#{gem['version']}'"
|
|
190
167
|
line += ", :require => '#{gem['require_name']}'" if gem['require_name']
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gem_tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Moen
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2010-02-
|
|
12
|
+
date: 2010-02-19 00:00:00 -06:00
|
|
13
13
|
default_executable: gemtools
|
|
14
14
|
dependencies: []
|
|
15
15
|
|