gemlocker 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/bin/gemlocker +300 -0
  2. data/doc/README.TXT +53 -0
  3. data/lib/gemlocker.rb +298 -0
  4. metadata +55 -0
@@ -0,0 +1,300 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'fileutils'
4
+ require 'rubygems/command'
5
+ require 'rubygems/gem_path_searcher'
6
+
7
+
8
+ class LockCommand < Gem::Command
9
+
10
+ def initialize
11
+ super 'lock', 'Generate a lockdown list of gems',
12
+ :strict => false
13
+
14
+ add_option '-s', '--[no-]strict',
15
+ 'fail if unable to satisfy a dependency' do |strict, options|
16
+ options[:strict] = strict
17
+
18
+ end
19
+ end
20
+
21
+
22
+ def arguments # :nodoc:
23
+ "GEMNAME name of gem to lock\nVERSION version of gem to lock"
24
+ end
25
+
26
+ def defaults_str # :nodoc:
27
+ "--no-strict"
28
+ end
29
+
30
+ def usage # :nodoc:
31
+ "#{program_name} GEMNAME-VERSION [GEMNAME-VERSION ...]"
32
+ end
33
+
34
+ def complain(message)
35
+ if options[:strict] then
36
+ raise Gem::Exception, message
37
+ else
38
+ say "# #{message}"
39
+ end
40
+ end
41
+
42
+ def execute(out_file_path,x)
43
+
44
+ fgl = File.open(File.join(out_file_path, "gem_lockdown.rb"), "w");
45
+ if !fgl then
46
+ say " gem_lockdown.rb is not writable";
47
+ else
48
+ fgl.puts"require 'rubygems'"
49
+ end
50
+ pending = [];
51
+ locked = {}
52
+ gemlist_file = File.join(out_file_path,"gemlist.log")
53
+ if (File.file?(gemlist_file) && File.readable?(gemlist_file)) then
54
+ f = File.open(gemlist_file,"r");
55
+
56
+ while (gemx=f.gets) do
57
+
58
+ pending <<gemx.strip
59
+ end
60
+ else
61
+ puts "cant open gemlist file"
62
+ return
63
+ end
64
+
65
+ puts "-----------------------------------------------------------","direct dependencies ... #{pending.size}","-----------------------------------------------------------";
66
+
67
+ until pending.empty? do
68
+ full_name = pending.shift
69
+
70
+ spec = Gem::SourceIndex.load_specification spec_path(full_name)
71
+
72
+ if spec.nil? then
73
+ complain "Could not find gem #{full_name}, try using the full name"
74
+ next
75
+ end
76
+ fgl.puts "gem '#{spec.name}','=#{spec.version}'" unless locked[spec.name]
77
+ say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
78
+ locked[spec.name] = true
79
+
80
+ spec.runtime_dependencies.each do |dep|
81
+ next if locked[dep.name]
82
+ candidates = Gem.source_index.search dep
83
+
84
+ if candidates.empty? then
85
+ complain "Unable to satisfy '#{dep}' from currently installed gems"
86
+ else
87
+ pending << candidates.last.full_name
88
+ end
89
+ end
90
+ end
91
+ fgl.close
92
+ puts "-----------------------------------------------------------","gem Lockdown file: #{File.join(out_file_path, "gem_lockdown.rb")}","-----------------------------------------------------------";
93
+
94
+ end
95
+
96
+ def spec_path(gem_full_name)
97
+ gemspecs = Gem.path.map do |path|
98
+ File.join path, "specifications", "#{gem_full_name}.gemspec"
99
+ end
100
+
101
+ gemspecs.find { |gemspec| File.exist? gemspec }
102
+ end
103
+
104
+ end
105
+
106
+ class Whichgem < Gem::Command
107
+
108
+ EXT = %w[.rb .rbw .so .dll .bundle] # HACK
109
+
110
+ def initialize
111
+ super 'which', 'Find the location of a library file you can require',
112
+ :search_gems_first => false, :show_all => false
113
+
114
+ add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
115
+ options[:show_all] = show_all
116
+ end
117
+
118
+ add_option '-g', '--[no-]gems-first',
119
+ 'search gems before non-gems' do |gems_first, options|
120
+ options[:search_gems_first] = gems_first
121
+
122
+ end
123
+ end
124
+
125
+ def arguments # :nodoc:
126
+ "FILE name of file to find"
127
+ end
128
+
129
+ def defaults_str # :nodoc:
130
+ "--no-gems-first --no-all"
131
+ end
132
+
133
+ def usage # :nodoc:
134
+ "#{program_name} FILE [FILE ...]"
135
+ end
136
+
137
+ def execute (file_list, file_path)
138
+ searcher = Gem::GemPathSearcher.new
139
+ fgl = File.open(File.join(file_path,"gemlist.log"), "a");
140
+ ferr= File.open(File.join(file_path,"errors.log"),"a");
141
+ flib= File.open(File.join(file_path,"libfiles.log"), "a");
142
+ #puts options[:args]
143
+
144
+ file_list.each do |arg|
145
+ dirs = $LOAD_PATH
146
+ spec = searcher.find arg
147
+
148
+ if spec then
149
+ if options[:search_gems_first] then
150
+ dirs = gem_paths(spec) + $LOAD_PATH
151
+ else
152
+ dirs = $LOAD_PATH + gem_paths(spec)
153
+ end
154
+ fgl.puts "#{spec.full_name}"
155
+ end
156
+
157
+ paths = find_paths arg, dirs
158
+
159
+ if paths.empty? then
160
+ ferr.puts "#{arg} : Can't find ruby library file in $LOAD_PATH/Corresponding Gem is not installed"
161
+ else
162
+
163
+ flib.puts paths
164
+ end
165
+ end
166
+ fgl.close;ferr.close;flib.close;
167
+ end
168
+
169
+ def find_paths(package_name, dirs)
170
+ result = []
171
+
172
+ dirs.each do |dir|
173
+ EXT.each do |ext|
174
+ full_path = File.join dir, "#{package_name}#{ext}"
175
+ if File.exist? full_path then
176
+ result << full_path
177
+ end
178
+ end
179
+ end
180
+
181
+ result
182
+ end
183
+
184
+ def gem_paths(spec)
185
+ spec.require_paths.collect { |d| File.join spec.full_gem_path, d }
186
+ end
187
+
188
+ def usage # :nodoc:
189
+ "#{program_name} FILE [...]"
190
+ end
191
+
192
+ end
193
+
194
+
195
+
196
+ class Grepgems
197
+ def initialize
198
+ @code_path = ARGV
199
+ @tmp_files =['gemlist.log','libfiles.log','errors.log']
200
+ purge_tempfiles;
201
+ @which_cmd = Whichgem.new;
202
+ @lock_cmd=LockCommand.new;
203
+ @out_file_path = Dir.pwd;
204
+ end
205
+ def description # :nodoc:
206
+ puts "
207
+ gemlocker [DIR1] [DIR2] [DIR3] [DIR......
208
+ Please supply at least one directory path.
209
+
210
+ USES OF GEMLOCKER:
211
+ -----------------------------------
212
+ 1. To list all dependencies - useful while building a gem/ rake file
213
+ 2. To avoid problems with new versions of gems by loading the required versions of gem; read below for more details.
214
+
215
+
216
+ More details..
217
+ --------------
218
+ The gemlocker command will generate a list of +gem+ statements that will lock down
219
+ the versions for the gem used in the files of the given paths in the command line. It will specify exact
220
+ versions in the requirements list to ensure that the gems loaded will always
221
+ be consistent. A full recursive search of all effected gems will be
222
+ generated.
223
+ It generates 4 files
224
+ gemlist.log; errors.log; libfiles.log; and gem_lockdown.rb
225
+ gemlist.log: contains all lib files used in the files of given path;
226
+ errors.log : contains all errors - Normally user defined lib files etc..
227
+ libfiles.log : lists all lib files-paths
228
+ gem_lockdown.rb : contains all gems and their latest versions.
229
+
230
+ It is similar to gem lock command; where gemlock generates lock down list for a given gem;
231
+ and gemlock generates lock down list for all gems used in a directory (of files.)
232
+
233
+ Example:
234
+ ---------
235
+ gemlocker /home/us/progdir . ..
236
+
237
+ will list out all dependencies used in your projects located in /home/us/progdir , current directory, .. and all their subdirectories;
238
+ in gem_lockdown.rb of command invokation directory by looking at the 'require' statements/lib files in the given paths and their subdirectories
239
+
240
+
241
+ require 'rubygems'
242
+ gem 'rails', '= 1.0.0'
243
+ gem 'rake', '= 0.7.0.1'
244
+ gem 'activesupport', '= 1.2.5'
245
+ gem 'activerecord', '= 1.13.2'
246
+ gem 'actionpack', '= 1.11.2'
247
+ gem 'actionmailer', '= 1.1.5'
248
+ gem 'actionwebservice', '= 1.0.0'
249
+
250
+ Just load gem_lockdown.rb from your application to ensure that the currect
251
+ versions are loaded. Make sure that lockdown.rb is loaded *before* any
252
+ other require statements.
253
+
254
+ Note : if you are not using latest versions of gems in your files(project), you may have to edit gem_lockdown.rb to load the desired versions.
255
+ -----
256
+ Example Scenario: If you are using activerecord-1.0.2 and your system is installed with activerecord-2.2.3 then gem_lockdown.rb will show only 2.2.3;
257
+ so, you will have to edit the gem_lockdown.rb to modify the version of activerecord to 1.0.2
258
+
259
+ "
260
+ end
261
+
262
+ def grep_libfiles
263
+ libs=[]
264
+ @code_path.each { |p|
265
+ rbfiles = File.join(p,"**", "*.*")
266
+ Dir.glob(rbfiles) {|file| #puts file;
267
+ f=File.open(file,"r") if File.file?(File.expand_path(file));
268
+ if f then
269
+ while(row = f.gets)
270
+ row.scan(/require\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # getting single quoted requires
271
+ row.scan(/require\s\"\w+\"/) {|m| s= m.split('"'); libs <<s.last;} # gettin double quoted requires
272
+ row.scan(/rrequire\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # get command line requires
273
+ row.scan(/gem\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # get external gem requires.
274
+ end
275
+ f.close
276
+ end
277
+
278
+ }
279
+ }
280
+ puts "-----------------------","list of requires", "-----------------------",libs.join( ' ');
281
+ @lock_cmd.execute(@out_file_path,@which_cmd.execute(libs,@out_file_path));
282
+ end
283
+ def purge_tempfiles
284
+ @tmp_files.each {|f| File.delete(f) if File.file?(f) ;}
285
+ end;
286
+
287
+
288
+ end;
289
+
290
+ s = Grepgems.new;
291
+ if ARGV.size == 0 or ARGV[0]=='--help' then
292
+ puts ARGV
293
+ puts " -------Usage -----"
294
+ s.description;
295
+ else
296
+ s.grep_libfiles;
297
+ end;
298
+
299
+
300
+
@@ -0,0 +1,53 @@
1
+
2
+ gemlocker [DIR1] [DIR2] [DIR3] [DIR......
3
+ Please supply at least one directory path.
4
+
5
+ USES OF GEMLOCKER:
6
+ -----------------------------------
7
+ 1. To list all dependencies - useful while building a gem/ rake file
8
+ 2. To avoid problems with new versions of gems by loading the required versions of gem; read below for more details.
9
+
10
+
11
+ The gemlocker command will generate a list of +gem+ statements that will lock down
12
+ the versions for the gem used in the files of the given paths in the command line. It will specify exact
13
+ versions in the requirements list to ensure that the gems loaded will always
14
+ be consistent. A full recursive search of all effected gems will be
15
+ generated.
16
+ It generates 4 files
17
+ gemlist.log; errors.log; libfiles.log; and gem_lockdown.rb
18
+ gemlist.log: contains all lib files used in the files of given path;
19
+ errors.log : contains all errors - Normally user defined lib files etc..
20
+ libfiles.log : lists all lib files-paths
21
+ gem_lockdown.rb : contains all gems and their latest versions.
22
+
23
+ It is similar to gem lock command; where gemlock generates lock down list for a given gem;
24
+ and gemlock generates lock down list for all gems used in a directory (of files.)
25
+
26
+ Example:
27
+
28
+ gemlocker /home/us/progdir . ..
29
+
30
+ will list out all dependencies used in your projects located in /home/us/progdir , current directory, .. and all their subdirectories;
31
+ in gem_lockdown.rb of command invokation directory by looking at the "require" statements/lib files in the given paths and their subdirectories
32
+
33
+ gem_lockdown.rb will look like below
34
+
35
+ require 'rubygems'
36
+ gem 'rails', '= 1.0.0'
37
+ gem 'rake', '= 0.7.0.1'
38
+ gem 'activesupport', '= 1.2.5'
39
+ gem 'activerecord', '= 1.13.2'
40
+ gem 'actionpack', '= 1.11.2'
41
+ gem 'actionmailer', '= 1.1.5'
42
+ gem 'actionwebservice', '= 1.0.0'
43
+
44
+ Just load gem_lockdown.rb from your application to ensure that the currect
45
+ versions are loaded. Make sure that lockdown.rb is loaded *before* any
46
+ other require statements.
47
+
48
+ Note : if you are not using latest versions of gems in your files(project), you may have to edit gem_lockdown.rb to load the desired versions.
49
+ -------
50
+ Example Scenario: If you are using activerecord-1.0.2 and your system is installed with activerecord-2.2.3 then gem_lockdown.rb will show only 2.2.3;
51
+ so, you will have to edit the gem_lockdown.rb to modify the version of activerecord to 1.0.2
52
+
53
+
@@ -0,0 +1,298 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'fileutils'
4
+ require 'rubygems/command'
5
+ require 'rubygems/gem_path_searcher'
6
+
7
+
8
+ class LockCommand < Gem::Command
9
+
10
+ def initialize
11
+ super 'lock', 'Generate a lockdown list of gems',
12
+ :strict => false
13
+
14
+ add_option '-s', '--[no-]strict',
15
+ 'fail if unable to satisfy a dependency' do |strict, options|
16
+ options[:strict] = strict
17
+
18
+ end
19
+ end
20
+
21
+
22
+ def arguments # :nodoc:
23
+ "GEMNAME name of gem to lock\nVERSION version of gem to lock"
24
+ end
25
+
26
+ def defaults_str # :nodoc:
27
+ "--no-strict"
28
+ end
29
+
30
+ def usage # :nodoc:
31
+ "#{program_name} GEMNAME-VERSION [GEMNAME-VERSION ...]"
32
+ end
33
+
34
+ def complain(message)
35
+ if options[:strict] then
36
+ raise Gem::Exception, message
37
+ else
38
+ say "# #{message}"
39
+ end
40
+ end
41
+
42
+ def execute(out_file_path,x)
43
+
44
+ fgl = File.open(File.join(out_file_path, "gem_lockdown.rb"), "w");
45
+ if !fgl then
46
+ say " gem_lockdown.rb is not writable";
47
+ else
48
+ fgl.puts"require 'rubygems'"
49
+ end
50
+ pending = [];
51
+ locked = {}
52
+ gemlist_file = File.join(out_file_path,"gemlist.log")
53
+ if (File.file?(gemlist_file) && File.readable?(gemlist_file)) then
54
+ f = File.open(gemlist_file,"r");
55
+
56
+ while (gemx=f.gets) do
57
+
58
+ pending <<gemx.strip
59
+ end
60
+ else
61
+ puts "cant open gemlist file"
62
+ return
63
+ end
64
+
65
+ puts "-----------------------------------------------------------","direct dependencies ... #{pending.size}","-----------------------------------------------------------";
66
+
67
+ until pending.empty? do
68
+ full_name = pending.shift
69
+
70
+ spec = Gem::SourceIndex.load_specification spec_path(full_name)
71
+
72
+ if spec.nil? then
73
+ complain "Could not find gem #{full_name}, try using the full name"
74
+ next
75
+ end
76
+ fgl.puts "gem '#{spec.name}','=#{spec.version}'" unless locked[spec.name]
77
+ say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
78
+ locked[spec.name] = true
79
+
80
+ spec.runtime_dependencies.each do |dep|
81
+ next if locked[dep.name]
82
+ candidates = Gem.source_index.search dep
83
+
84
+ if candidates.empty? then
85
+ complain "Unable to satisfy '#{dep}' from currently installed gems"
86
+ else
87
+ pending << candidates.last.full_name
88
+ end
89
+ end
90
+ end
91
+ fgl.close
92
+ puts "-----------------------------------------------------------","gem Lockdown file: #{File.join(out_file_path, "gem_lockdown.rb")}","-----------------------------------------------------------";
93
+
94
+ end
95
+
96
+ def spec_path(gem_full_name)
97
+ gemspecs = Gem.path.map do |path|
98
+ File.join path, "specifications", "#{gem_full_name}.gemspec"
99
+ end
100
+
101
+ gemspecs.find { |gemspec| File.exist? gemspec }
102
+ end
103
+
104
+ end
105
+
106
+ class Whichgem < Gem::Command
107
+
108
+ EXT = %w[.rb .rbw .so .dll .bundle] # HACK
109
+
110
+ def initialize
111
+ super 'which', 'Find the location of a library file you can require',
112
+ :search_gems_first => false, :show_all => false
113
+
114
+ add_option '-a', '--[no-]all', 'show all matching files' do |show_all, options|
115
+ options[:show_all] = show_all
116
+ end
117
+
118
+ add_option '-g', '--[no-]gems-first',
119
+ 'search gems before non-gems' do |gems_first, options|
120
+ options[:search_gems_first] = gems_first
121
+
122
+ end
123
+ end
124
+
125
+ def arguments # :nodoc:
126
+ "FILE name of file to find"
127
+ end
128
+
129
+ def defaults_str # :nodoc:
130
+ "--no-gems-first --no-all"
131
+ end
132
+
133
+ def usage # :nodoc:
134
+ "#{program_name} FILE [FILE ...]"
135
+ end
136
+
137
+ def execute (file_list, file_path)
138
+ searcher = Gem::GemPathSearcher.new
139
+ fgl = File.open(File.join(file_path,"gemlist.log"), "a");
140
+ ferr= File.open(File.join(file_path,"errors.log"),"a");
141
+ flib= File.open(File.join(file_path,"libfiles.log"), "a");
142
+ #puts options[:args]
143
+
144
+ file_list.each do |arg|
145
+ dirs = $LOAD_PATH
146
+ spec = searcher.find arg
147
+
148
+ if spec then
149
+ if options[:search_gems_first] then
150
+ dirs = gem_paths(spec) + $LOAD_PATH
151
+ else
152
+ dirs = $LOAD_PATH + gem_paths(spec)
153
+ end
154
+ fgl.puts "#{spec.full_name}"
155
+ end
156
+
157
+ paths = find_paths arg, dirs
158
+
159
+ if paths.empty? then
160
+ ferr.puts "#{arg} : Can't find ruby library file in $LOAD_PATH/Corresponding Gem is not installed"
161
+ else
162
+
163
+ flib.puts paths
164
+ end
165
+ end
166
+ fgl.close;ferr.close;flib.close;
167
+ end
168
+
169
+ def find_paths(package_name, dirs)
170
+ result = []
171
+
172
+ dirs.each do |dir|
173
+ EXT.each do |ext|
174
+ full_path = File.join dir, "#{package_name}#{ext}"
175
+ if File.exist? full_path then
176
+ result << full_path
177
+ end
178
+ end
179
+ end
180
+
181
+ result
182
+ end
183
+
184
+ def gem_paths(spec)
185
+ spec.require_paths.collect { |d| File.join spec.full_gem_path, d }
186
+ end
187
+
188
+ def usage # :nodoc:
189
+ "#{program_name} FILE [...]"
190
+ end
191
+
192
+ end
193
+
194
+
195
+
196
+ class Grepgems
197
+ def initialize
198
+ @code_path = ARGV
199
+ @tmp_files =['gemlist.log','libfiles.log','errors.log']
200
+ purge_tempfiles;
201
+ @which_cmd = Whichgem.new;
202
+ @lock_cmd=LockCommand.new;
203
+ @out_file_path = Dir.pwd;
204
+ end
205
+ def description # :nodoc:
206
+ puts "
207
+ -------Usage -----
208
+ gemlocker [DIR1] [DIR2] [DIR3] [DIR......
209
+ Please supply at least one directory path.
210
+
211
+ USES OF GEMLOCKER:
212
+ -----------------
213
+ 1. To avoid problems with new versions of a gem by loading a specific versions of gem;
214
+ 2. To list all dependencies - useful while building a gem/ rake file
215
+
216
+ More details..
217
+ --------------
218
+ The gemlocker command will generate a list of +gem+ statements that will lock down
219
+ the versions for the gem used in the files of the given paths in the command line. It will specify exact
220
+ versions in the requirements list to ensure that the gems loaded will always
221
+ be consistent. A full recursive search of all effected gems will be
222
+ generated.
223
+ It generates 4 files
224
+ gemlist.log; errors.log; libfiles.log; and gem_lockdown.rb
225
+ gemlist.log: contains all lib files used in the files of given path;
226
+ errors.log : contains all errors - Normally user defined lib files etc..
227
+ libfiles.log : lists all lib files-paths
228
+ gem_lockdown.rb : contains all gems and their latest versions.
229
+
230
+ It is similar to gem lock command; where gemlock generates lock down list for a given gem;
231
+ and gemlock generates lock down list for all gems used in a directory (of files.)
232
+
233
+ Example:
234
+
235
+ gemlocker /home/us/progdir . ..
236
+
237
+ will list out all dependencies in gem_lockdown.rb in invokation directory by looking at the 'require' statements/lib files used in your projects located in /home/us/progdir , current directory, .. and all their subdirectories;
238
+ gem_lockdown.rb will look like below
239
+
240
+ require 'rubygems'
241
+ gem 'rails', '= 1.0.0'
242
+ gem 'rake', '= 0.7.0.1'
243
+ gem 'activesupport', '= 1.2.5'
244
+ gem 'activerecord', '= 1.13.2'
245
+ gem 'actionpack', '= 1.11.2'
246
+ gem 'actionmailer', '= 1.1.5'
247
+ gem 'actionwebservice', '= 1.0.0'
248
+
249
+ Just load gem_lockdown.rb from your application to ensure that the currect
250
+ versions are loaded. Make sure that lockdown.rb is loaded *before* any
251
+ other require statements.
252
+
253
+ Note : if you are not using latest versions of gems in your files(project), you may have to edit gem_lockdown.rb to load the desired versions.
254
+ example scenario: If you are using activerecord-1.0.2 and your system is installed with activerecord-2.2.3 then gem_lockdown.rb will show only 2.2.3;
255
+ so, you will have to edit the gem_lockdown.rb to modify the version of activerecord to 1.0.2
256
+
257
+ "
258
+ end
259
+
260
+ def grep_libfiles
261
+ libs=[]
262
+ @code_path.each { |p|
263
+ rbfiles = File.join(p,"**", "*.*")
264
+ Dir.glob(rbfiles) {|file| #puts file;
265
+ f=File.open(file,"r") if File.file?(File.expand_path(file));
266
+ if f then
267
+ while(row = f.gets)
268
+ row.scan(/require\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # getting single quoted requires
269
+ row.scan(/require\s\"\w+\"/) {|m| s= m.split('"'); libs <<s.last;} # gettin double quoted requires
270
+ row.scan(/rrequire\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # get command line requires
271
+ row.scan(/gem\s\'\w+\'/) {|m| s=m.split("'"); libs<<s.last;} # get external gem requires.
272
+ end
273
+ f.close
274
+ end
275
+
276
+ }
277
+ }
278
+ puts "-----------------------","list of requires", "-----------------------",libs.join( ' ');
279
+ @lock_cmd.execute(@out_file_path,@which_cmd.execute(libs,@out_file_path));
280
+ end
281
+ def purge_tempfiles
282
+ @tmp_files.each {|f| File.delete(f) if File.file?(f) ;}
283
+ end;
284
+
285
+
286
+ end;
287
+
288
+ s = Grepgems.new;
289
+ if ARGV.size == 0 or ARGV[0]=='--help' then
290
+ puts ARGV
291
+ puts " -------Usage -----"
292
+ s.description;
293
+ else
294
+ s.grep_libfiles;
295
+ end;
296
+
297
+
298
+
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gemlocker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sarat Kumar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-13 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: To geneate/list of all gems and there versions used in a given directory of ruby files
17
+ email: skumar@attinteractive.com
18
+ executables:
19
+ - gemlocker
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - doc/README.TXT
24
+ files:
25
+ - lib/gemlocker.rb
26
+ - bin/gemlocker
27
+ - doc/README.TXT
28
+ has_rdoc: true
29
+ homepage: Yellowpages.com
30
+ post_install_message:
31
+ rdoc_options: []
32
+
33
+ require_paths:
34
+ - lib
35
+ required_ruby_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: "0"
40
+ version:
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ requirements: []
48
+
49
+ rubyforge_project:
50
+ rubygems_version: 1.3.1
51
+ signing_key:
52
+ specification_version: 2
53
+ summary: To geneate/list of all gems and there versions used in a given directory of ruby files
54
+ test_files: []
55
+