fig 0.1.39 → 0.1.41

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
@@ -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