fig 0.1.39-java → 0.1.41-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ require 'fig/userinputerror'
2
+
3
+ module Fig
4
+ # An issue with a stored package.
5
+ class PackageError < UserInputError
6
+ end
7
+ end
data/lib/fig/parser.rb CHANGED
@@ -2,6 +2,8 @@ require 'polyglot'
2
2
  require 'treetop'
3
3
 
4
4
  require 'fig/grammar'
5
+ require 'fig/logging'
6
+ require 'fig/packageerror'
5
7
 
6
8
  module Fig
7
9
  class Parser
@@ -12,16 +14,11 @@ module Fig
12
14
  def parse_package(package_name, version_name, directory, input)
13
15
  input = input.gsub(/#.*$/, '')
14
16
  result = @parser.parse(" #{input} ")
15
- if result.nil?
16
- $stderr.puts "#{directory}: #{@parser.failure_reason}"
17
- exit 10
17
+ if result.nil?
18
+ Fig::Logging.fatal "#{directory}: #{@parser.failure_reason}"
19
+ raise PackageError.new
18
20
  end
19
21
  result.to_package(package_name, version_name, directory)
20
22
  end
21
-
22
- # def parse_descriptor(descriptor)
23
- # puts @parser.methods.sort
24
- # end
25
23
  end
26
-
27
24
  end
@@ -1,12 +1,17 @@
1
+ require 'fig/logging'
2
+ require 'fig/notfounderror'
1
3
  require 'fig/parser'
4
+ require 'fig/repositoryerror'
5
+ require 'fig/urlaccesserror'
2
6
 
3
7
  module Fig
4
8
  class Repository
5
- def initialize(os, local_repository_dir, remote_repository_url, remote_repository_user=nil, update=false, update_if_missing=true)
9
+ def initialize(os, local_repository_dir, remote_repository_url, application_config, remote_repository_user=nil, update=false, update_if_missing=true)
6
10
  @os = os
7
11
  @local_repository_dir = local_repository_dir
8
12
  @remote_repository_url = remote_repository_url
9
13
  @remote_repository_user = remote_repository_user
14
+ @application_config = application_config
10
15
  @update = update
11
16
  @update_if_missing = update_if_missing
12
17
  @parser = Parser.new
@@ -20,7 +25,7 @@ module Fig
20
25
  end
21
26
  end
22
27
 
23
- def clean(package_name, version_name)
28
+ def clean(package_name, version_name)
24
29
  dir = File.join(@local_repository_dir, package_name)
25
30
  dir = File.join(dir, version_name) if version_name
26
31
  FileUtils.rm_rf(dir)
@@ -42,13 +47,13 @@ module Fig
42
47
  @os.download_list(@remote_repository_url)
43
48
  end
44
49
 
45
- def publish_package(package_statements, package_name, version_name, local_only)
50
+ def publish_package(package_statements, package_name, version_name, local_only)
46
51
  temp_dir = temp_dir_for_package(package_name, version_name)
47
52
  @os.clear_directory(temp_dir)
48
53
  local_dir = local_dir_for_package(package_name, version_name)
49
54
  @os.clear_directory(local_dir)
50
- fig_file = File.join(temp_dir, ".fig")
51
- content = bundle_resources(package_statements).map do |statement|
55
+ fig_file = File.join(temp_dir, '.fig')
56
+ content = bundle_resources(package_statements).map do |statement|
52
57
  if statement.is_a?(Publish)
53
58
  nil
54
59
  elsif statement.is_a?(Archive) || statement.is_a?(Resource)
@@ -56,17 +61,17 @@ module Fig
56
61
  archive_name = statement.url
57
62
  archive_remote = "#{remote_dir_for_package(package_name, version_name)}/#{statement.url}"
58
63
  else
59
- archive_name = statement.url.split("/").last
64
+ archive_name = statement.url.split('/').last
60
65
  archive_remote = "#{remote_dir_for_package(package_name, version_name)}/#{archive_name}"
61
66
  end
62
- if is_url?(statement.url)
67
+ if is_url_with_access?(statement.url)
63
68
  archive_local = File.join(temp_dir, archive_name)
64
69
  @os.download(statement.url, archive_local)
65
70
  else
66
71
  archive_local = statement.url
67
72
  end
68
73
  @os.upload(archive_local, archive_remote, @remote_repository_user) unless local_only
69
- @os.copy(archive_local, local_dir + "/" + archive_name)
74
+ @os.copy(archive_local, local_dir + '/' + archive_name)
70
75
  if statement.is_a?(Archive)
71
76
  @os.unpack_archive(local_dir, archive_name)
72
77
  end
@@ -92,7 +97,7 @@ module Fig
92
97
  end
93
98
  if resources.size > 0
94
99
  resources = expand_globs_from(resources)
95
- file = "resources.tar.gz"
100
+ file = 'resources.tar.gz'
96
101
  @os.create_archive(file, resources)
97
102
  new_package_statements.unshift(Archive.new(file))
98
103
  at_exit { File.delete(file) }
@@ -101,12 +106,17 @@ module Fig
101
106
  end
102
107
 
103
108
  def load_package(package_name, version_name)
109
+ Logging.debug "Considering #{package_name}/#{version_name}."
104
110
  if @update || (@update_if_missing && package_missing?(package_name, version_name))
105
111
  update_package(package_name, version_name)
106
112
  end
107
113
  read_local_package(package_name, version_name)
108
114
  end
109
115
 
116
+ def updating?
117
+ return @update || @update_if_missing
118
+ end
119
+
110
120
  def update_package(package_name, version_name)
111
121
  remote_fig_file = remote_fig_file_for_package(package_name, version_name)
112
122
  local_fig_file = local_fig_file_for_package(package_name, version_name)
@@ -114,17 +124,17 @@ module Fig
114
124
  if @os.download(remote_fig_file, local_fig_file)
115
125
  install_package(package_name, version_name)
116
126
  end
117
- rescue NotFoundException
118
- $stderr.puts "Package not found in remote repository: #{package_name}/#{version_name}"
127
+ rescue NotFoundError
128
+ Logging.fatal "Package not found in remote repository: #{package_name}/#{version_name}"
119
129
  delete_local_package(package_name, version_name)
120
- exit 1
130
+ raise RepositoryError.new
121
131
  end
122
132
  end
123
133
 
124
134
  def read_local_package(package_name, version_name)
125
135
  dir = local_dir_for_package(package_name, version_name)
126
136
  read_package_from_directory(dir, package_name, version_name)
127
- end
137
+ end
128
138
 
129
139
  def read_remote_package(package_name, version_name)
130
140
  url = remote_fig_file_for_package(package_name, version_name)
@@ -133,21 +143,21 @@ module Fig
133
143
  end
134
144
 
135
145
  def read_package_from_directory(dir, package_name, version_name)
136
- file = File.join(dir, ".fig")
146
+ file = File.join(dir, '.fig')
137
147
  if not File.exist?(file)
138
- file = File.join(dir, "package.fig")
148
+ file = File.join(dir, 'package.fig')
139
149
  end
140
150
  if not File.exist?(file)
141
- $stderr.puts "Fig file not found for package: #{file}"
142
- exit 10
151
+ Logging.fatal "Fig file not found for package: #{file}"
152
+ raise RepositoryError.new
143
153
  end
144
154
  read_package_from_file(file, package_name, version_name)
145
155
  end
146
156
 
147
157
  def read_package_from_file(file_name, package_name, version_name)
148
158
  if not @os.exist?(file_name)
149
- $stderr.puts "Package not found: #{package_name}/#{version_name}"
150
- exit 1
159
+ Logging.fatal "Package not found: #{package_name}/#{version_name}"
160
+ raise RepositoryError.new
151
161
  end
152
162
  modified_time = @os.mtime(file_name)
153
163
  content = @os.read(file_name)
@@ -158,7 +168,7 @@ module Fig
158
168
  descriptor = "#{package_name}/#{version_name}"
159
169
  dir = @overrides[descriptor]
160
170
  if dir
161
- $stderr.puts "override: #{descriptor}=#{dir}"
171
+ Logging.info "override: #{descriptor}=#{dir}"
162
172
  else
163
173
  dir = File.join(@local_repository_dir, package_name, version_name)
164
174
  end
@@ -174,13 +184,13 @@ module Fig
174
184
  @os.clear_directory(temp_dir)
175
185
  package.archive_urls.each do |archive_url|
176
186
  if not is_url?(archive_url)
177
- archive_url = remote_dir_for_package(package_name, version_name) + "/" + archive_url
187
+ archive_url = remote_dir_for_package(package_name, version_name) + '/' + archive_url
178
188
  end
179
189
  @os.download_archive(archive_url, File.join(temp_dir))
180
190
  end
181
191
  package.resource_urls.each do |resource_url|
182
192
  if not is_url?(resource_url)
183
- resource_url = remote_dir_for_package(package_name, version_name) + "/" + resource_url
193
+ resource_url = remote_dir_for_package(package_name, version_name) + '/' + resource_url
184
194
  end
185
195
  @os.download_resource(resource_url, File.join(temp_dir))
186
196
  end
@@ -188,13 +198,13 @@ module Fig
188
198
  @os.clear_directory(local_dir)
189
199
  # some packages contain no files, only a fig file.
190
200
  if not (package.archive_urls.empty? && package.resource_urls.empty?)
191
- FileUtils.mv(Dir.glob(File.join(temp_dir, "*")), local_dir)
201
+ FileUtils.mv(Dir.glob(File.join(temp_dir, '*')), local_dir)
192
202
  end
193
203
  write_local_package(package_name, version_name, package)
194
204
  rescue
195
- $stderr.puts "Install failed, cleaning up"
205
+ Logging.fatal 'Install failed, cleaning up.'
196
206
  delete_local_package(package_name, version_name)
197
- exit 10
207
+ raise RepositoryError.new
198
208
  end
199
209
  end
200
210
 
@@ -209,6 +219,12 @@ module Fig
209
219
  not (/ftp:\/\/|http:\/\/|file:\/\/|ssh:\/\// =~ url).nil?
210
220
  end
211
221
 
222
+ def is_url_with_access?(url)
223
+ return false if not is_url?(url)
224
+ raise URLAccessError.new(url) if not @application_config.url_access_allowed?(url)
225
+ return true
226
+ end
227
+
212
228
  def delete_local_package(package_name, version_name)
213
229
  FileUtils.rm_rf(local_dir_for_package(package_name, version_name))
214
230
  end
@@ -220,10 +236,10 @@ module Fig
220
236
 
221
237
  def remote_fig_file_for_package(package_name, version_name)
222
238
  "#{@remote_repository_url}/#{package_name}/#{version_name}/.fig"
223
- end
239
+ end
224
240
 
225
241
  def local_fig_file_for_package(package_name, version_name)
226
- File.join(local_dir_for_package(package_name, version_name), ".fig")
242
+ File.join(local_dir_for_package(package_name, version_name), '.fig')
227
243
  end
228
244
 
229
245
  def remote_dir_for_package(package_name, version_name)
@@ -231,7 +247,7 @@ module Fig
231
247
  end
232
248
 
233
249
  def temp_dir_for_package(package_name, version_name)
234
- File.join(@local_repository_dir, "tmp")
250
+ File.join(@local_repository_dir, 'tmp')
235
251
  end
236
252
 
237
253
  def package_missing?(package_name, version_name)
@@ -0,0 +1,7 @@
1
+ require 'fig/userinputerror'
2
+
3
+ module Fig
4
+ # A problem within/related to a repository.
5
+ class RepositoryError < UserInputError
6
+ end
7
+ end
data/lib/fig/retriever.rb CHANGED
@@ -1,35 +1,37 @@
1
1
  require 'ostruct'
2
2
  require 'set'
3
3
 
4
- # This class copies files from the project directories in ~/.fighome to the
5
- # user's working directory. It keeps track of which files have already been copied, and which
4
+ require 'fig/logging'
5
+
6
+ # This class copies files from the project directories in ~/.fighome to the
7
+ # user's working directory. It keeps track of which files have already been copied, and which
6
8
  # package/versions they came from, and deletes files as necessary to ensure that
7
- # we never have files from two different versions of the same package in the user's
8
- # working directory.
9
+ # we never have files from two different versions of the same package in the user's
10
+ # working directory.
9
11
  class Retriever
10
12
  def initialize(base_dir)
11
13
  @base_dir = base_dir
12
14
  @configs = {}
13
- @fig_dir = File.join(@base_dir, ".fig")
15
+ @fig_dir = File.join(@base_dir, '.fig')
14
16
 
15
- file = File.join(@fig_dir, "retrieve")
17
+ file = File.join(@fig_dir, 'retrieve')
16
18
  if File.exist?(file)
17
19
  load(file)
18
20
  end
19
21
  end
20
22
 
21
- def with_config(name, version)
23
+ def with_package_config(name, version)
22
24
  if name and version
23
25
  @config = @configs[name]
24
26
  if @config && @config.version != version
25
27
  @config.files.each do |relpath|
26
- $stderr.puts "\033[31m- [#{@config.name}/#{@config.version}] #{relpath}\033[0m"
28
+ Fig::Logging.info "- [#{@config.name}/#{@config.version}] #{relpath}"
27
29
  FileUtils.rm_f(File.join(@base_dir, relpath))
28
30
  end
29
31
  @config = nil
30
32
  end
31
33
  if not @config
32
- @config = new_config(name, version)
34
+ @config = new_package_config(name, version)
33
35
  @configs[name] = @config
34
36
  end
35
37
  else
@@ -44,10 +46,10 @@ class Retriever
44
46
 
45
47
  def save
46
48
  FileUtils.mkdir_p(@fig_dir)
47
- File.open(File.join(@fig_dir, "retrieve"), 'w') do |f|
49
+ File.open(File.join(@fig_dir, 'retrieve'), 'w') do |f|
48
50
  @configs.each do |name,config|
49
51
  config.files.each do |target|
50
- f << target << "=" << config.name << "/" << config.version << "\n"
52
+ f << target << '=' << config.name << '/' << config.version << "\n"
51
53
  end
52
54
  end
53
55
  end
@@ -65,10 +67,10 @@ private
65
67
  config = @configs[config_name]
66
68
  if config
67
69
  if config.version != config_version
68
- raise "version mismatch in .figretrieve"
70
+ raise 'version mismatch in .figretrieve'
69
71
  end
70
72
  else
71
- config = new_config(config_name, config_version)
73
+ config = new_package_config(config_name, config_version)
72
74
  @configs[config_name] = config
73
75
  end
74
76
  config.files << target
@@ -78,7 +80,7 @@ private
78
80
  end
79
81
  end
80
82
 
81
- def new_config(name, version)
83
+ def new_package_config(name, version)
82
84
  config = OpenStruct.new
83
85
  config.name = name
84
86
  config.version = version
@@ -91,13 +93,20 @@ private
91
93
  if File.directory?(source)
92
94
  FileUtils.mkdir_p(target)
93
95
  Dir.foreach(source) do |child|
94
- if child != "." and child != ".."
95
- copy(File.join(source, child), File.join(relpath, child))
96
+ if child != '.' and child != '..'
97
+ source_file = File.join(source, child)
98
+ target_file = File.join(relpath, child)
99
+ Fig::Logging.debug "Copying #{source_file} to #{target_file}."
100
+ copy(source_file, target_file)
96
101
  end
97
102
  end
98
103
  else
99
104
  if !File.exist?(target) || File.mtime(source) > File.mtime(target)
100
- $stderr.puts "\033[32m+ [#{@config.name}/#{@config.version}] #{relpath}\033[0m"
105
+ if Fig::Logging.debug?
106
+ Fig::Logging.debug "Copying package [#{@config.name}/#{@config.version}] from #{source} to #{target}."
107
+ else
108
+ Fig::Logging.info "+ [#{@config.name}/#{@config.version}] #{relpath}"
109
+ end
101
110
  FileUtils.mkdir_p(File.dirname(target))
102
111
  FileUtils.cp(source, target, :preserve => true)
103
112
  end
@@ -0,0 +1,9 @@
1
+ require 'fig/userinputerror'
2
+
3
+ module Fig
4
+ class URLAccessError < UserInputError
5
+ def initialize(url)
6
+ @url = url
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,4 @@
1
+ module Fig
2
+ class UserInputError < StandardError
3
+ end
4
+ end
data/lib/fig/windows.rb CHANGED
@@ -22,12 +22,12 @@ EOF
22
22
 
23
23
  def self.with_generated_batch_script(cmd)
24
24
  command = cmd.join(' ')
25
- template = ERB.new(BATCH_SCRIPT_TEMPLATE, 0, "%")
25
+ template = ERB.new(BATCH_SCRIPT_TEMPLATE, 0, '%')
26
26
  output = template.result(binding)
27
27
  begin
28
- tf = File.new("C:/tmp/fig_command.bat", "w")
28
+ tf = File.new('C:/tmp/fig_command.bat', 'w')
29
29
  FileUtils.chmod(0755, tf.path)
30
- File.open(tf.path, "w") do |fh|
30
+ File.open(tf.path, 'w') do |fh|
31
31
  fh.puts output
32
32
  end
33
33
  tf.close
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.39
4
+ hash: 73
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 41
10
+ version: 0.1.41
6
11
  platform: java
7
12
  authors:
8
13
  - Matthew Foemmel
@@ -10,29 +15,39 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-10-07 00:00:00 -05:00
18
+ date: 2011-11-10 00:00:00 -06:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
- name: net-ssh
22
+ name: highline
18
23
  prerelease: false
19
24
  requirement: &id001 !ruby/object:Gem::Requirement
20
25
  none: false
21
26
  requirements:
22
27
  - - ">="
23
28
  - !ruby/object:Gem::Version
24
- version: 2.0.15
29
+ hash: 11
30
+ segments:
31
+ - 1
32
+ - 6
33
+ - 2
34
+ version: 1.6.2
25
35
  type: :runtime
26
36
  version_requirements: *id001
27
37
  - !ruby/object:Gem::Dependency
28
- name: net-sftp
38
+ name: log4r
29
39
  prerelease: false
30
40
  requirement: &id002 !ruby/object:Gem::Requirement
31
41
  none: false
32
42
  requirements:
33
43
  - - ">="
34
44
  - !ruby/object:Gem::Version
35
- version: 2.0.4
45
+ hash: 25
46
+ segments:
47
+ - 1
48
+ - 1
49
+ - 5
50
+ version: 1.1.5
36
51
  type: :runtime
37
52
  version_requirements: *id002
38
53
  - !ruby/object:Gem::Dependency
@@ -43,64 +58,124 @@ dependencies:
43
58
  requirements:
44
59
  - - ">="
45
60
  - !ruby/object:Gem::Version
61
+ hash: 19
62
+ segments:
63
+ - 0
64
+ - 2
65
+ - 2
46
66
  version: 0.2.2
47
67
  type: :runtime
48
68
  version_requirements: *id003
49
69
  - !ruby/object:Gem::Dependency
50
- name: polyglot
70
+ name: net-sftp
51
71
  prerelease: false
52
72
  requirement: &id004 !ruby/object:Gem::Requirement
53
73
  none: false
54
74
  requirements:
55
75
  - - ">="
56
76
  - !ruby/object:Gem::Version
57
- version: 0.2.9
77
+ hash: 7
78
+ segments:
79
+ - 2
80
+ - 0
81
+ - 4
82
+ version: 2.0.4
58
83
  type: :runtime
59
84
  version_requirements: *id004
60
85
  - !ruby/object:Gem::Dependency
61
- name: treetop
86
+ name: net-ssh
62
87
  prerelease: false
63
88
  requirement: &id005 !ruby/object:Gem::Requirement
64
89
  none: false
65
90
  requirements:
66
91
  - - ">="
67
92
  - !ruby/object:Gem::Version
68
- version: 1.4.2
93
+ hash: 17
94
+ segments:
95
+ - 2
96
+ - 0
97
+ - 15
98
+ version: 2.0.15
69
99
  type: :runtime
70
100
  version_requirements: *id005
71
101
  - !ruby/object:Gem::Dependency
72
- name: highline
102
+ name: polyglot
73
103
  prerelease: false
74
104
  requirement: &id006 !ruby/object:Gem::Requirement
75
105
  none: false
76
106
  requirements:
77
107
  - - ">="
78
108
  - !ruby/object:Gem::Version
79
- version: 1.6.2
109
+ hash: 5
110
+ segments:
111
+ - 0
112
+ - 2
113
+ - 9
114
+ version: 0.2.9
80
115
  type: :runtime
81
116
  version_requirements: *id006
82
117
  - !ruby/object:Gem::Dependency
83
- name: rspec
118
+ name: rdoc
84
119
  prerelease: false
85
120
  requirement: &id007 !ruby/object:Gem::Requirement
86
121
  none: false
87
122
  requirements:
88
- - - ~>
123
+ - - ">="
89
124
  - !ruby/object:Gem::Version
90
- version: "1.3"
91
- type: :development
125
+ hash: 27
126
+ segments:
127
+ - 2
128
+ - 4
129
+ - 2
130
+ version: 2.4.2
131
+ type: :runtime
92
132
  version_requirements: *id007
93
133
  - !ruby/object:Gem::Dependency
94
- name: open4
134
+ name: treetop
95
135
  prerelease: false
96
136
  requirement: &id008 !ruby/object:Gem::Requirement
97
137
  none: false
98
138
  requirements:
99
139
  - - ">="
100
140
  - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 1
144
+ - 4
145
+ - 2
146
+ version: 1.4.2
147
+ type: :runtime
148
+ version_requirements: *id008
149
+ - !ruby/object:Gem::Dependency
150
+ name: open4
151
+ prerelease: false
152
+ requirement: &id009 !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ hash: 21
158
+ segments:
159
+ - 1
160
+ - 0
161
+ - 1
101
162
  version: 1.0.1
102
163
  type: :development
103
- version_requirements: *id008
164
+ version_requirements: *id009
165
+ - !ruby/object:Gem::Dependency
166
+ name: rspec
167
+ prerelease: false
168
+ requirement: &id010 !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ hash: 7
174
+ segments:
175
+ - 2
176
+ version: "2"
177
+ type: :development
178
+ version_requirements: *id010
104
179
  description: Fig is a utility for configuring environments and managing dependencies across a team of developers. You give it a list of packages and a shell command to run; it creates an environment that includes those packages, then executes the shell command in it (the caller's environment is not affected).
105
180
  email: git@foemmel.com
106
181
  executables:
@@ -112,18 +187,31 @@ extra_rdoc_files:
112
187
  - LICENSE
113
188
  - README.md
114
189
  files:
190
+ - Changes
191
+ - VERSION
115
192
  - bin/fig
116
193
  - bin/fig-download
117
194
  - lib/fig.rb
195
+ - lib/fig/applicationconfiguration.rb
118
196
  - lib/fig/backtrace.rb
197
+ - lib/fig/configfileerror.rb
119
198
  - lib/fig/environment.rb
199
+ - lib/fig/figrc.rb
120
200
  - lib/fig/grammar.treetop
201
+ - lib/fig/log4rconfigerror.rb
202
+ - lib/fig/logging.rb
203
+ - lib/fig/networkerror.rb
204
+ - lib/fig/notfounderror.rb
121
205
  - lib/fig/options.rb
122
206
  - lib/fig/os.rb
123
207
  - lib/fig/package.rb
208
+ - lib/fig/packageerror.rb
124
209
  - lib/fig/parser.rb
125
210
  - lib/fig/repository.rb
211
+ - lib/fig/repositoryerror.rb
126
212
  - lib/fig/retriever.rb
213
+ - lib/fig/urlaccesserror.rb
214
+ - lib/fig/userinputerror.rb
127
215
  - lib/fig/windows.rb
128
216
  - LICENSE
129
217
  - README.md
@@ -141,19 +229,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
229
  requirements:
142
230
  - - ">="
143
231
  - !ruby/object:Gem::Version
232
+ hash: 3
233
+ segments:
234
+ - 0
144
235
  version: "0"
145
236
  required_rubygems_version: !ruby/object:Gem::Requirement
146
237
  none: false
147
238
  requirements:
148
239
  - - ">="
149
240
  - !ruby/object:Gem::Version
241
+ hash: 3
242
+ segments:
243
+ - 0
150
244
  version: "0"
151
245
  requirements: []
152
246
 
153
247
  rubyforge_project:
154
- rubygems_version: 1.5.3
248
+ rubygems_version: 1.3.7
155
249
  signing_key:
156
250
  specification_version: 3
157
- summary: Fig is a utility for configuring environments and managing dependencies across a team of developers..
251
+ summary: Fig is a utility for configuring environments and managing dependencies across a team of developers.
158
252
  test_files: []
159
253