fig 0.1.48-java → 0.1.49-java

Sign up to get free protection for your applications and to get access to all the features.
data/Changes CHANGED
@@ -1,11 +1,56 @@
1
- v0.1.xx
1
+ v0.1.49
2
+
3
+ - Finalizing figrc name for URL whitelist.
4
+
5
+ v0.1.47-48
6
+
7
+ - Exception, regex, and test refactoring.
8
+
9
+ - Fixing operator precedence in environment.
10
+
11
+ - Updated copyright years.
12
+
13
+ - Changed README example to use file:// URL.
14
+
15
+ - Change ssh:// tests to file:// tests.
16
+
17
+ - Refactored '[package]' substitution.
18
+
19
+ - Implemented @ escaping in variables.
20
+
21
+ v0.1.46
22
+
23
+ - Rakefile improvements.
24
+
25
+ - Fixing broken reference to Fig::Logging in environment.rb.
2
26
 
3
- - "file:" protocol works for FIG_REMOTE_HOME.
27
+
28
+ v0.1.43-0.1.45
29
+
30
+ - Rakefile improvements.
31
+
32
+ - Test file refactoring/improvements.
4
33
 
5
34
  - Complains if it has nothing to do.
6
35
 
36
+ v0.1.42
37
+
38
+ - Fig::Package refactoring.
39
+
40
+ - "file:" protocol works for FIG_REMOTE_HOME.
41
+
7
42
  - Testing no longer requires ssh.
8
43
 
44
+ - Implemented whitelist chceking after parse.
45
+
46
+ - Simplify character classes in grammar, slight grammar refactoring.
47
+
48
+ - Supports MacOS (better) in Rakefile.
49
+
50
+ - No longer emits stack trace for invalid command line option(s).
51
+
52
+ - Tests emits std(out|err) on failure, for ease in debugging test failures.
53
+
9
54
 
10
55
  v0.1.41
11
56
 
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009, Matthew Foemmel
1
+ Copyright (c) 2009-2011, Matthew Foemmel
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -24,4 +24,4 @@ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24
24
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
25
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
26
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -200,9 +200,9 @@ A config section can be included in another config section:
200
200
  Let's share our little script with the rest of the team by bundling it into a
201
201
  package and publishing it. First, point the `FIG_REMOTE_URL` environment
202
202
  variable to the remote repository. If you just want to play around with fig,
203
- you can have it point to localhost:
203
+ you can have it point to a local directory:
204
204
 
205
- $ export FIG_REMOTE_URL=ssh://localhost$(pwd)/remote
205
+ $ export FIG_REMOTE_URL=file://$(pwd)/remote
206
206
 
207
207
  Before we publish our package, we'll need to tell fig which files we want to include. We do this by using the "resource" statement in our "package.fig" file:
208
208
 
@@ -283,4 +283,4 @@ Community
283
283
  Copyright
284
284
  =========
285
285
 
286
- Copyright (c) 2009 Matthew Foemmel. See LICENSE for details.
286
+ Copyright (c) 2009-2011 Matthew Foemmel. See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.48
1
+ 0.1.49
data/lib/fig.rb CHANGED
@@ -79,7 +79,7 @@ module Fig
79
79
  options[:update_if_missing]
80
80
  )
81
81
  retriever = Retriever.new('.')
82
- # Check to see if this is still happening with the new layers of abstraction.
82
+ # Check to see if this is still happening with the new layers of abstraction.
83
83
  at_exit { retriever.save }
84
84
  env = Environment.new(os, repos, vars, retriever)
85
85
 
@@ -87,18 +87,18 @@ module Fig
87
87
  env.apply_config_statement(nil, modifier, nil)
88
88
  end
89
89
 
90
- input = nil
91
- if options[:input] == :none
90
+ package_config_file = nil
91
+ if options[:package_config_file] == :none
92
92
  # ignore
93
- elsif options[:input] == '-'
94
- input = $stdin.read
95
- elsif options[:input].nil?
96
- input = os.read(DEFAULT_FIG_FILE) if os.exist?(DEFAULT_FIG_FILE)
93
+ elsif options[:package_config_file] == '-'
94
+ package_config_file = $stdin.read
95
+ elsif options[:package_config_file].nil?
96
+ package_config_file = File.read(DEFAULT_FIG_FILE) if File.exist?(DEFAULT_FIG_FILE)
97
97
  else
98
- if os.exist?(options[:input])
99
- input = os.read(options[:input])
98
+ if File.exist?(options[:package_config_file])
99
+ package_config_file = File.read(options[:package_config_file])
100
100
  else
101
- $stderr.puts %Q<File not found: "#{options[:input]}".>
101
+ $stderr.puts %Q<File not found: "#{options[:package_config_file]}".>
102
102
  return 1
103
103
  end
104
104
  end
@@ -131,12 +131,12 @@ module Fig
131
131
  return 0
132
132
  end
133
133
 
134
- if input
135
- package = Parser.new(configuration).parse_package(nil, nil, '.', input)
134
+ if package_config_file
135
+ package = Parser.new(configuration).parse_package(nil, nil, '.', package_config_file)
136
136
  direct_retrieves=[]
137
- if options[:retrieve]
137
+ if options[:update] || options[:update_if_missing]
138
138
  package.retrieves.each do |var, path|
139
- if var =~ /^@([^\/]+)(.*)/
139
+ if var =~ %r< ^ \@ ([^/]+) (.*) >x
140
140
  direct_retrieves << [$1, $2, path]
141
141
  else
142
142
  env.add_retrieve(var, path)
@@ -219,13 +219,20 @@ module Fig
219
219
  rescue UserInputError => exception
220
220
  # If there's no message, we assume that the cause has already been logged.
221
221
  if not exception_has_message?(exception)
222
- $stderr.puts exception.to_s
222
+ Logging.fatal exception.to_s
223
223
  end
224
224
 
225
225
  return 1
226
226
  rescue OptionParser::InvalidOption => exception
227
227
  $stderr.puts exception.to_s
228
228
  $stderr.puts USAGE
229
+ return 1
230
+ rescue RepositoryError => error
231
+ # If there's no message, we assume that the cause has already been logged.
232
+ if not exception_has_message?(error)
233
+ Logging.fatal error.to_s
234
+ end
235
+
229
236
  return 1
230
237
  end
231
238
  end
@@ -9,7 +9,7 @@ module Fig
9
9
 
10
10
  def ensure_url_whitelist_initialized()
11
11
  return if not @whitelist.nil?
12
- whitelist = self['url_whitelist']
12
+ whitelist = self['url whitelist']
13
13
  if whitelist.nil?
14
14
  @whitelist = []
15
15
  else
@@ -30,7 +30,6 @@ module Fig
30
30
  end
31
31
 
32
32
  # Indicates that the values from a particular envrionment variable path
33
-
34
33
  def add_retrieve(name, path)
35
34
  @retrieve_vars[name] = path
36
35
  end
@@ -57,18 +56,27 @@ module Fig
57
56
 
58
57
  def execute_shell(command)
59
58
  with_environment do
60
- yield command.map{|arg| expand_arg(arg)}
59
+ yield command.map{|arg| expand_command_line_argument(arg)}
61
60
  end
62
61
  end
63
62
 
64
63
  def execute_config(base_package, package_name, config_name, version_name, args)
65
- package = lookup_package(package_name || base_package.package_name, version_name, Backtrace.new(nil, package_name, version_name, config_name))
64
+ package = lookup_package(
65
+ package_name || base_package.package_name,
66
+ version_name,
67
+ Backtrace.new(nil, package_name, version_name, config_name)
68
+ )
66
69
  result = nil
67
70
  commands = package[config_name || 'default'].commands
68
71
  with_environment do
69
72
  # TODO nil check
70
73
  commands.each do |command|
71
- result = yield expand_arg("#{command.command} #{args.join(' ')}").gsub('@', package.directory).split(' ')
74
+ argument =
75
+ expand_command_line_argument(
76
+ "#{command.command} #{args.join(' ')}"
77
+ )
78
+
79
+ result = yield expand_path(argument, package).split(' ')
72
80
  end
73
81
  end
74
82
  result
@@ -114,11 +122,11 @@ module Fig
114
122
  private
115
123
 
116
124
  def set_variable(base_package, name, value)
117
- @variables[name] = expand_value(base_package, name, value)
125
+ @variables[name] = expand_and_retrieve_variable_value(base_package, name, value)
118
126
  end
119
127
 
120
128
  def append_variable(base_package, name, value)
121
- value = expand_value(base_package, name, value)
129
+ value = expand_and_retrieve_variable_value(base_package, name, value)
122
130
  # TODO: converting all environment variables to upcase is not a robust
123
131
  # comparison. It also assumes all env vars will be in upcase
124
132
  # in package.fig
@@ -165,28 +173,25 @@ module Fig
165
173
  package
166
174
  end
167
175
 
168
- # Replace @ symbol with the package's directory
169
- def expand_value(base_package, name, value)
176
+ # Replace @ symbol with the package's directory, "[package]" with the
177
+ # package name.
178
+ def expand_and_retrieve_variable_value(base_package, name, value)
170
179
  return value unless base_package && base_package.package_name
171
- file = value.gsub(/\@/, base_package.directory)
180
+
181
+ file = expand_path(value, base_package)
182
+
172
183
  if @retrieve_vars.member?(name)
173
184
  # A '//' in the source file's path tells us to preserve path
174
185
  # information after the '//' when doing a retrieve.
175
186
  if file.split('//').size > 1
176
187
  preserved_path = file.split('//').last
177
188
  target = File.join(
178
- @retrieve_vars[name].gsub(
179
- /\[package\]/,
180
- base_package.package_name
181
- ),
189
+ translate_retrieve_variables(base_package, name),
182
190
  preserved_path
183
191
  )
184
192
  else
185
193
  target = File.join(
186
- @retrieve_vars[name].gsub(
187
- /\[package\]/,
188
- base_package.package_name
189
- )
194
+ translate_retrieve_variables(base_package, name)
190
195
  )
191
196
  if not File.directory?(file)
192
197
  target = File.join(target, File.basename(file))
@@ -199,18 +204,73 @@ module Fig
199
204
  end
200
205
  file = target
201
206
  end
202
- file
207
+ return file
208
+ end
209
+
210
+ def expand_path(path, base_package)
211
+ expanded_path = expand_at_sign_package_references(path, base_package)
212
+ check_for_bad_escape(expanded_path, path)
213
+ return expanded_path.gsub(%r< \\ ([\\@]) >x, '\1')
203
214
  end
204
215
 
205
- def expand_arg(arg)
206
- arg.gsub( / @ ( [a-zA-Z0-9.-]+ ) /x ) do |match|
207
- package = @packages[$1]
216
+ def expand_at_sign_package_references(arg, base_package)
217
+ return arg.gsub(
218
+ %r<
219
+ (?: ^ | \G) # Zero-width anchor.
220
+ ( [^\\@]* (?:\\{2})*) # An even number of leading backslashes
221
+ \@ # The package indicator
222
+ >x
223
+ ) do |match|
224
+ backslashes = $1 || ''
225
+ backslashes + base_package.directory
226
+ end
227
+ end
228
+
229
+ def expand_command_line_argument(arg)
230
+ package_substituted = expand_named_package_references(arg)
231
+ check_for_bad_escape(package_substituted, arg)
232
+
233
+ return package_substituted.gsub(%r< \\ ([\\@]) >x, '\1')
234
+ end
235
+
236
+ def expand_named_package_references(arg)
237
+ return arg.gsub(
238
+ %r<
239
+ (?: ^ | \G) # Zero-width anchor.
240
+ ( [^\\@]* (?:\\{2})*) # An even number of leading backslashes
241
+ \@ # The package indicator
242
+ ( [a-zA-Z0-9.-]+ ) # Package name
243
+ >x
244
+ ) do |match|
245
+ backslashes = $1 || ''
246
+ package = @packages[$2]
208
247
  if package.nil?
209
- Logging.fatal "Package not found: #{$1}"
210
- raise RepositoryError.new
248
+ raise RepositoryError.new "Package not found: #{$1}"
211
249
  end
212
- package.directory
250
+ backslashes + package.directory
213
251
  end
214
252
  end
253
+
254
+ # The value is expected to have had any @ substitution already done, but
255
+ # collapsing of escapes not done yet.
256
+ def check_for_bad_escape(substituted, original)
257
+ if substituted =~ %r<
258
+ (?: ^ | [^\\]) # Start of line or non backslash
259
+ (?: \\{2})* # Even number of backslashes (including zero)
260
+ ( \\ [^\\@] ) # A bad escape
261
+ >x
262
+ raise RepositoryError.new(
263
+ %Q<Unknown escape "#{$1}" in "#{original}">
264
+ )
265
+ end
266
+ end
267
+
268
+ def translate_retrieve_variables(base_package, name)
269
+ return \
270
+ @retrieve_vars[name].gsub(
271
+ / \[package\] /x,
272
+ base_package.package_name
273
+ )
274
+ end
215
275
  end
216
276
  end
data/lib/fig/options.rb CHANGED
@@ -101,12 +101,12 @@ EOF
101
101
  options[:debug] = true
102
102
  end
103
103
 
104
- options[:input] = nil
104
+ options[:package_config_file] = nil
105
105
  opts.on(
106
106
  '--file FILE',
107
107
  %q<read fig file FILE. Use '-' for stdin. See also --no-file>
108
108
  ) do |path|
109
- options[:input] = path
109
+ options[:package_config_file] = path
110
110
  end
111
111
 
112
112
  options[:force] = nil
@@ -162,7 +162,7 @@ EOF
162
162
  opts.on(
163
163
  '--no-file', 'ignore package.fig file in current directory'
164
164
  ) do |path|
165
- options[:input] = :none
165
+ options[:package_config_file] = :none
166
166
  end
167
167
 
168
168
  options[:publish] = nil
@@ -200,7 +200,7 @@ EOF
200
200
  '--update',
201
201
  'check remote repo for updates and download to $FIG_HOME as necessary'
202
202
  ) do
203
- options[:update] = true; options[:retrieve] = true
203
+ options[:update] = true
204
204
  end
205
205
 
206
206
  options[:update_if_missing] = false
@@ -209,7 +209,7 @@ EOF
209
209
  '--update-if-missing',
210
210
  'check remote repo for updates only if package missing from $FIG_HOME'
211
211
  ) do
212
- options[:update_if_missing] = true; options[:retrieve] = true
212
+ options[:update_if_missing] = true
213
213
  end
214
214
 
215
215
  opts.on(
data/lib/fig/os.rb CHANGED
@@ -48,18 +48,10 @@ module Fig
48
48
  Dir.entries(dir) - ['.','..']
49
49
  end
50
50
 
51
- def exist?(path)
52
- File.exist?(path)
53
- end
54
-
55
51
  def mtime(path)
56
52
  File.mtime(path)
57
53
  end
58
54
 
59
- def read(path)
60
- File.read(path)
61
- end
62
-
63
55
  def write(path, content)
64
56
  File.open(path, 'wb') { |f| f.binmode; f << content }
65
57
  end
@@ -132,7 +124,10 @@ module Fig
132
124
  packages << pkg + '/' + ver
133
125
  end
134
126
  rescue Net::FTPPermError
135
- # ignore
127
+ # Ignore this error because it's indicative of the FTP library encountering a file
128
+ # or directory that it does not have permission to open.
129
+ # Fig needs to be able to have secure repos/packages
130
+ # and there is no way easy way to deal with the permissions issues other than consuming these errors.
136
131
  end
137
132
  pos += num_threads
138
133
  end
@@ -148,9 +143,10 @@ module Fig
148
143
  uri = URI.parse(url)
149
144
  case uri.scheme
150
145
  when 'ftp'
151
- ftp = Net::FTP.new(uri.host)
152
- ftp_login(ftp, uri.host)
153
146
  begin
147
+ ftp = Net::FTP.new(uri.host)
148
+ ftp_login(ftp, uri.host)
149
+
154
150
  if File.exist?(path) && ftp.mtime(uri.path) <= File.mtime(path)
155
151
  Logging.debug "#{path} is up to date."
156
152
  return false
@@ -159,8 +155,11 @@ module Fig
159
155
  ftp.getbinaryfile(uri.path, path, 256*1024)
160
156
  return true
161
157
  end
162
- rescue Net::FTPPermError => e
163
- Logging.warn e
158
+ rescue Net::FTPPermError => error
159
+ Logging.warn error.message
160
+ raise NotFoundError.new
161
+ rescue SocketError => error
162
+ Logging.warn error.message
164
163
  raise NotFoundError.new
165
164
  end
166
165
  when 'http'
@@ -182,6 +181,7 @@ module Fig
182
181
  when 'file'
183
182
  begin
184
183
  FileUtils.cp(uri.path, path)
184
+ return true
185
185
  rescue Errno::ENOENT => e
186
186
  raise NotFoundError.new
187
187
  end
data/lib/fig/package.rb CHANGED
@@ -12,8 +12,8 @@ class Fig::Package
12
12
  attr_accessor :backtrace
13
13
 
14
14
  def initialize(package_name, version_name, directory, statements)
15
- @package_name = package_name
16
- @version_name = version_name
15
+ @package_name = package_name || 'uninitialized'
16
+ @version_name = version_name || 'default'
17
17
  @directory = directory
18
18
  @statements = statements
19
19
  @backtrace = nil
@@ -23,8 +23,10 @@ class Fig::Package
23
23
  @statements.each do |stmt|
24
24
  return stmt if stmt.is_a?(Configuration) && stmt.name == config_name
25
25
  end
26
- Fig::Logging.fatal "Configuration not found: #{@package_name}/#{@version_name}:#{config_name}"
27
- raise PackageError.new
26
+ message =
27
+ "Configuration not found: #{@package_name}/#{@version_name}:#{config_name}"
28
+ Fig::Logging.fatal message
29
+ raise Fig::PackageError.new message
28
30
  end
29
31
 
30
32
  def configs
@@ -142,12 +142,6 @@ module Fig
142
142
  read_package_from_directory(dir, package_name, version_name)
143
143
  end
144
144
 
145
- def read_remote_package(package_name, version_name)
146
- url = remote_fig_file_for_package(package_name, version_name)
147
- content = @os.read_url(url)
148
- return @parser.parse_package(package_name, version_name, nil, content)
149
- end
150
-
151
145
  def read_package_from_directory(dir, package_name, version_name)
152
146
  file = File.join(dir, '.fig')
153
147
  if not File.exist?(file)
@@ -161,11 +155,11 @@ module Fig
161
155
  end
162
156
 
163
157
  def read_package_from_file(file_name, package_name, version_name)
164
- if not @os.exist?(file_name)
158
+ if not File.exist?(file_name)
165
159
  Logging.fatal "Package not found: #{package_name}/#{version_name}"
166
160
  raise RepositoryError.new
167
161
  end
168
- content = @os.read(file_name)
162
+ content = File.read(file_name)
169
163
  return @parser.parse_package(package_name, version_name, File.dirname(file_name), content)
170
164
  end
171
165
 
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fig
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.48
4
+ hash: 121
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 49
10
+ version: 0.1.49
6
11
  platform: java
7
12
  authors:
8
13
  - Matthew Foemmel
@@ -10,7 +15,8 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-11-16 00:00:00 Z
18
+ date: 2011-12-02 00:00:00 -06:00
19
+ default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: highline
@@ -20,6 +26,11 @@ dependencies:
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 11
30
+ segments:
31
+ - 1
32
+ - 6
33
+ - 2
23
34
  version: 1.6.2
24
35
  type: :runtime
25
36
  version_requirements: *id001
@@ -31,6 +42,11 @@ dependencies:
31
42
  requirements:
32
43
  - - ">="
33
44
  - !ruby/object:Gem::Version
45
+ hash: 25
46
+ segments:
47
+ - 1
48
+ - 1
49
+ - 5
34
50
  version: 1.1.5
35
51
  type: :runtime
36
52
  version_requirements: *id002
@@ -42,6 +58,11 @@ dependencies:
42
58
  requirements:
43
59
  - - ">="
44
60
  - !ruby/object:Gem::Version
61
+ hash: 19
62
+ segments:
63
+ - 0
64
+ - 2
65
+ - 2
45
66
  version: 0.2.2
46
67
  type: :runtime
47
68
  version_requirements: *id003
@@ -53,6 +74,11 @@ dependencies:
53
74
  requirements:
54
75
  - - ">="
55
76
  - !ruby/object:Gem::Version
77
+ hash: 7
78
+ segments:
79
+ - 2
80
+ - 0
81
+ - 4
56
82
  version: 2.0.4
57
83
  type: :runtime
58
84
  version_requirements: *id004
@@ -64,6 +90,11 @@ dependencies:
64
90
  requirements:
65
91
  - - ">="
66
92
  - !ruby/object:Gem::Version
93
+ hash: 17
94
+ segments:
95
+ - 2
96
+ - 0
97
+ - 15
67
98
  version: 2.0.15
68
99
  type: :runtime
69
100
  version_requirements: *id005
@@ -75,6 +106,11 @@ dependencies:
75
106
  requirements:
76
107
  - - ">="
77
108
  - !ruby/object:Gem::Version
109
+ hash: 5
110
+ segments:
111
+ - 0
112
+ - 2
113
+ - 9
78
114
  version: 0.2.9
79
115
  type: :runtime
80
116
  version_requirements: *id006
@@ -86,6 +122,11 @@ dependencies:
86
122
  requirements:
87
123
  - - ">="
88
124
  - !ruby/object:Gem::Version
125
+ hash: 27
126
+ segments:
127
+ - 2
128
+ - 4
129
+ - 2
89
130
  version: 2.4.2
90
131
  type: :runtime
91
132
  version_requirements: *id007
@@ -97,6 +138,11 @@ dependencies:
97
138
  requirements:
98
139
  - - ">="
99
140
  - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 1
144
+ - 4
145
+ - 2
100
146
  version: 1.4.2
101
147
  type: :runtime
102
148
  version_requirements: *id008
@@ -108,6 +154,11 @@ dependencies:
108
154
  requirements:
109
155
  - - ">="
110
156
  - !ruby/object:Gem::Version
157
+ hash: 21
158
+ segments:
159
+ - 1
160
+ - 0
161
+ - 1
111
162
  version: 1.0.1
112
163
  type: :development
113
164
  version_requirements: *id009
@@ -119,6 +170,9 @@ dependencies:
119
170
  requirements:
120
171
  - - ~>
121
172
  - !ruby/object:Gem::Version
173
+ hash: 7
174
+ segments:
175
+ - 2
122
176
  version: "2"
123
177
  type: :development
124
178
  version_requirements: *id010
@@ -173,6 +227,7 @@ files:
173
227
  - lib/fig/windows.rb
174
228
  - LICENSE
175
229
  - README.md
230
+ has_rdoc: true
176
231
  homepage: http://github.com/mfoemmel/fig
177
232
  licenses: []
178
233
 
@@ -186,19 +241,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
241
  requirements:
187
242
  - - ">="
188
243
  - !ruby/object:Gem::Version
244
+ hash: 3
245
+ segments:
246
+ - 0
189
247
  version: "0"
190
248
  required_rubygems_version: !ruby/object:Gem::Requirement
191
249
  none: false
192
250
  requirements:
193
251
  - - ">="
194
252
  - !ruby/object:Gem::Version
253
+ hash: 3
254
+ segments:
255
+ - 0
195
256
  version: "0"
196
257
  requirements: []
197
258
 
198
259
  rubyforge_project:
199
- rubygems_version: 1.8.11
260
+ rubygems_version: 1.3.7
200
261
  signing_key:
201
262
  specification_version: 3
202
- summary: Fig is a utility for configuring environments and managing dependencies across a team of developers.
263
+ summary: Fig is a utility for configuring environments and managing dependencies across a team of developers. (fig/java version)
203
264
  test_files: []
204
265