fig 0.1.39 → 0.1.41

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.
@@ -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
@@ -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
@@ -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
@@ -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: ruby
7
12
  authors:
8
13
  - Matthew Foemmel
@@ -10,7 +15,7 @@ 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
@@ -19,8 +24,13 @@ dependencies:
19
24
  requirement: &id001 !ruby/object:Gem::Requirement
20
25
  none: false
21
26
  requirements:
22
- - - "="
27
+ - - ">="
23
28
  - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
24
34
  version: 1.0.0
25
35
  type: :development
26
36
  version_requirements: *id001
@@ -30,31 +40,46 @@ dependencies:
30
40
  requirement: &id002 !ruby/object:Gem::Requirement
31
41
  none: false
32
42
  requirements:
33
- - - "="
43
+ - - ">="
34
44
  - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 1
48
+ - 0
49
+ - 0
35
50
  version: 1.0.0
36
51
  type: :runtime
37
52
  version_requirements: *id002
38
53
  - !ruby/object:Gem::Dependency
39
- name: net-ssh
54
+ name: highline
40
55
  prerelease: false
41
56
  requirement: &id003 !ruby/object:Gem::Requirement
42
57
  none: false
43
58
  requirements:
44
59
  - - ">="
45
60
  - !ruby/object:Gem::Version
46
- version: 2.0.15
61
+ hash: 11
62
+ segments:
63
+ - 1
64
+ - 6
65
+ - 2
66
+ version: 1.6.2
47
67
  type: :runtime
48
68
  version_requirements: *id003
49
69
  - !ruby/object:Gem::Dependency
50
- name: net-sftp
70
+ name: log4r
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: 2.0.4
77
+ hash: 25
78
+ segments:
79
+ - 1
80
+ - 1
81
+ - 5
82
+ version: 1.1.5
58
83
  type: :runtime
59
84
  version_requirements: *id004
60
85
  - !ruby/object:Gem::Dependency
@@ -65,174 +90,314 @@ dependencies:
65
90
  requirements:
66
91
  - - ">="
67
92
  - !ruby/object:Gem::Version
93
+ hash: 19
94
+ segments:
95
+ - 0
96
+ - 2
97
+ - 2
68
98
  version: 0.2.2
69
99
  type: :runtime
70
100
  version_requirements: *id005
71
101
  - !ruby/object:Gem::Dependency
72
- name: polyglot
102
+ name: net-sftp
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: 0.2.9
109
+ hash: 7
110
+ segments:
111
+ - 2
112
+ - 0
113
+ - 4
114
+ version: 2.0.4
80
115
  type: :runtime
81
116
  version_requirements: *id006
82
117
  - !ruby/object:Gem::Dependency
83
- name: treetop
118
+ name: net-ssh
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.4.2
125
+ hash: 17
126
+ segments:
127
+ - 2
128
+ - 0
129
+ - 15
130
+ version: 2.0.15
91
131
  type: :runtime
92
132
  version_requirements: *id007
93
133
  - !ruby/object:Gem::Dependency
94
- name: highline
134
+ name: polyglot
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
101
- version: 1.6.2
141
+ hash: 5
142
+ segments:
143
+ - 0
144
+ - 2
145
+ - 9
146
+ version: 0.2.9
102
147
  type: :runtime
103
148
  version_requirements: *id008
104
149
  - !ruby/object:Gem::Dependency
105
- name: rspec
150
+ name: rdoc
106
151
  prerelease: false
107
152
  requirement: &id009 !ruby/object:Gem::Requirement
108
153
  none: false
109
154
  requirements:
110
- - - ~>
155
+ - - ">="
111
156
  - !ruby/object:Gem::Version
112
- version: "1.3"
113
- type: :development
157
+ hash: 27
158
+ segments:
159
+ - 2
160
+ - 4
161
+ - 2
162
+ version: 2.4.2
163
+ type: :runtime
114
164
  version_requirements: *id009
115
165
  - !ruby/object:Gem::Dependency
116
- name: open4
166
+ name: treetop
117
167
  prerelease: false
118
168
  requirement: &id010 !ruby/object:Gem::Requirement
119
169
  none: false
120
170
  requirements:
121
171
  - - ">="
122
172
  - !ruby/object:Gem::Version
123
- version: 1.0.1
124
- type: :development
173
+ hash: 3
174
+ segments:
175
+ - 1
176
+ - 4
177
+ - 2
178
+ version: 1.4.2
179
+ type: :runtime
125
180
  version_requirements: *id010
126
181
  - !ruby/object:Gem::Dependency
127
- name: libarchive-static
182
+ name: open4
128
183
  prerelease: false
129
184
  requirement: &id011 !ruby/object:Gem::Requirement
130
185
  none: false
131
186
  requirements:
132
- - - "="
187
+ - - ">="
133
188
  - !ruby/object:Gem::Version
134
- version: 1.0.0
189
+ hash: 21
190
+ segments:
191
+ - 1
192
+ - 0
193
+ - 1
194
+ version: 1.0.1
135
195
  type: :development
136
196
  version_requirements: *id011
137
197
  - !ruby/object:Gem::Dependency
138
- name: libarchive-static
198
+ name: rspec
139
199
  prerelease: false
140
200
  requirement: &id012 !ruby/object:Gem::Requirement
141
201
  none: false
142
202
  requirements:
143
- - - "="
203
+ - - ~>
144
204
  - !ruby/object:Gem::Version
145
- version: 1.0.0
146
- type: :runtime
205
+ hash: 7
206
+ segments:
207
+ - 2
208
+ version: "2"
209
+ type: :development
147
210
  version_requirements: *id012
148
211
  - !ruby/object:Gem::Dependency
149
- name: net-ssh
212
+ name: libarchive-static
150
213
  prerelease: false
151
214
  requirement: &id013 !ruby/object:Gem::Requirement
152
215
  none: false
153
216
  requirements:
154
217
  - - ">="
155
218
  - !ruby/object:Gem::Version
156
- version: 2.0.15
157
- type: :runtime
219
+ hash: 23
220
+ segments:
221
+ - 1
222
+ - 0
223
+ - 0
224
+ version: 1.0.0
225
+ type: :development
158
226
  version_requirements: *id013
159
227
  - !ruby/object:Gem::Dependency
160
- name: net-sftp
228
+ name: libarchive-static
161
229
  prerelease: false
162
230
  requirement: &id014 !ruby/object:Gem::Requirement
163
231
  none: false
164
232
  requirements:
165
233
  - - ">="
166
234
  - !ruby/object:Gem::Version
167
- version: 2.0.4
235
+ hash: 23
236
+ segments:
237
+ - 1
238
+ - 0
239
+ - 0
240
+ version: 1.0.0
168
241
  type: :runtime
169
242
  version_requirements: *id014
170
243
  - !ruby/object:Gem::Dependency
171
- name: net-netrc
244
+ name: highline
172
245
  prerelease: false
173
246
  requirement: &id015 !ruby/object:Gem::Requirement
174
247
  none: false
175
248
  requirements:
176
249
  - - ">="
177
250
  - !ruby/object:Gem::Version
178
- version: 0.2.2
251
+ hash: 11
252
+ segments:
253
+ - 1
254
+ - 6
255
+ - 2
256
+ version: 1.6.2
179
257
  type: :runtime
180
258
  version_requirements: *id015
181
259
  - !ruby/object:Gem::Dependency
182
- name: polyglot
260
+ name: log4r
183
261
  prerelease: false
184
262
  requirement: &id016 !ruby/object:Gem::Requirement
185
263
  none: false
186
264
  requirements:
187
265
  - - ">="
188
266
  - !ruby/object:Gem::Version
189
- version: 0.2.9
267
+ hash: 25
268
+ segments:
269
+ - 1
270
+ - 1
271
+ - 5
272
+ version: 1.1.5
190
273
  type: :runtime
191
274
  version_requirements: *id016
192
275
  - !ruby/object:Gem::Dependency
193
- name: treetop
276
+ name: net-netrc
194
277
  prerelease: false
195
278
  requirement: &id017 !ruby/object:Gem::Requirement
196
279
  none: false
197
280
  requirements:
198
281
  - - ">="
199
282
  - !ruby/object:Gem::Version
200
- version: 1.4.2
283
+ hash: 19
284
+ segments:
285
+ - 0
286
+ - 2
287
+ - 2
288
+ version: 0.2.2
201
289
  type: :runtime
202
290
  version_requirements: *id017
203
291
  - !ruby/object:Gem::Dependency
204
- name: highline
292
+ name: net-sftp
205
293
  prerelease: false
206
294
  requirement: &id018 !ruby/object:Gem::Requirement
207
295
  none: false
208
296
  requirements:
209
297
  - - ">="
210
298
  - !ruby/object:Gem::Version
211
- version: 1.6.2
299
+ hash: 7
300
+ segments:
301
+ - 2
302
+ - 0
303
+ - 4
304
+ version: 2.0.4
212
305
  type: :runtime
213
306
  version_requirements: *id018
214
307
  - !ruby/object:Gem::Dependency
215
- name: rspec
308
+ name: net-ssh
216
309
  prerelease: false
217
310
  requirement: &id019 !ruby/object:Gem::Requirement
218
311
  none: false
219
312
  requirements:
220
- - - ~>
313
+ - - ">="
221
314
  - !ruby/object:Gem::Version
222
- version: "1.3"
223
- type: :development
315
+ hash: 17
316
+ segments:
317
+ - 2
318
+ - 0
319
+ - 15
320
+ version: 2.0.15
321
+ type: :runtime
224
322
  version_requirements: *id019
225
323
  - !ruby/object:Gem::Dependency
226
- name: open4
324
+ name: polyglot
227
325
  prerelease: false
228
326
  requirement: &id020 !ruby/object:Gem::Requirement
229
327
  none: false
230
328
  requirements:
231
329
  - - ">="
232
330
  - !ruby/object:Gem::Version
331
+ hash: 5
332
+ segments:
333
+ - 0
334
+ - 2
335
+ - 9
336
+ version: 0.2.9
337
+ type: :runtime
338
+ version_requirements: *id020
339
+ - !ruby/object:Gem::Dependency
340
+ name: rdoc
341
+ prerelease: false
342
+ requirement: &id021 !ruby/object:Gem::Requirement
343
+ none: false
344
+ requirements:
345
+ - - ">="
346
+ - !ruby/object:Gem::Version
347
+ hash: 27
348
+ segments:
349
+ - 2
350
+ - 4
351
+ - 2
352
+ version: 2.4.2
353
+ type: :runtime
354
+ version_requirements: *id021
355
+ - !ruby/object:Gem::Dependency
356
+ name: treetop
357
+ prerelease: false
358
+ requirement: &id022 !ruby/object:Gem::Requirement
359
+ none: false
360
+ requirements:
361
+ - - ">="
362
+ - !ruby/object:Gem::Version
363
+ hash: 3
364
+ segments:
365
+ - 1
366
+ - 4
367
+ - 2
368
+ version: 1.4.2
369
+ type: :runtime
370
+ version_requirements: *id022
371
+ - !ruby/object:Gem::Dependency
372
+ name: open4
373
+ prerelease: false
374
+ requirement: &id023 !ruby/object:Gem::Requirement
375
+ none: false
376
+ requirements:
377
+ - - ">="
378
+ - !ruby/object:Gem::Version
379
+ hash: 21
380
+ segments:
381
+ - 1
382
+ - 0
383
+ - 1
233
384
  version: 1.0.1
234
385
  type: :development
235
- version_requirements: *id020
386
+ version_requirements: *id023
387
+ - !ruby/object:Gem::Dependency
388
+ name: rspec
389
+ prerelease: false
390
+ requirement: &id024 !ruby/object:Gem::Requirement
391
+ none: false
392
+ requirements:
393
+ - - ~>
394
+ - !ruby/object:Gem::Version
395
+ hash: 7
396
+ segments:
397
+ - 2
398
+ version: "2"
399
+ type: :development
400
+ version_requirements: *id024
236
401
  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).
237
402
  email: git@foemmel.com
238
403
  executables:
@@ -244,18 +409,31 @@ extra_rdoc_files:
244
409
  - LICENSE
245
410
  - README.md
246
411
  files:
412
+ - Changes
413
+ - VERSION
247
414
  - bin/fig
248
415
  - bin/fig-download
249
416
  - lib/fig.rb
417
+ - lib/fig/applicationconfiguration.rb
250
418
  - lib/fig/backtrace.rb
419
+ - lib/fig/configfileerror.rb
251
420
  - lib/fig/environment.rb
421
+ - lib/fig/figrc.rb
252
422
  - lib/fig/grammar.treetop
423
+ - lib/fig/log4rconfigerror.rb
424
+ - lib/fig/logging.rb
425
+ - lib/fig/networkerror.rb
426
+ - lib/fig/notfounderror.rb
253
427
  - lib/fig/options.rb
254
428
  - lib/fig/os.rb
255
429
  - lib/fig/package.rb
430
+ - lib/fig/packageerror.rb
256
431
  - lib/fig/parser.rb
257
432
  - lib/fig/repository.rb
433
+ - lib/fig/repositoryerror.rb
258
434
  - lib/fig/retriever.rb
435
+ - lib/fig/urlaccesserror.rb
436
+ - lib/fig/userinputerror.rb
259
437
  - lib/fig/windows.rb
260
438
  - LICENSE
261
439
  - README.md
@@ -273,19 +451,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
273
451
  requirements:
274
452
  - - ">="
275
453
  - !ruby/object:Gem::Version
454
+ hash: 3
455
+ segments:
456
+ - 0
276
457
  version: "0"
277
458
  required_rubygems_version: !ruby/object:Gem::Requirement
278
459
  none: false
279
460
  requirements:
280
461
  - - ">="
281
462
  - !ruby/object:Gem::Version
463
+ hash: 3
464
+ segments:
465
+ - 0
282
466
  version: "0"
283
467
  requirements: []
284
468
 
285
469
  rubyforge_project:
286
- rubygems_version: 1.5.3
470
+ rubygems_version: 1.3.7
287
471
  signing_key:
288
472
  specification_version: 3
289
- summary: Fig is a utility for configuring environments and managing dependencies across a team of developers..
473
+ summary: Fig is a utility for configuring environments and managing dependencies across a team of developers.
290
474
  test_files: []
291
475