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.
- data/Changes +45 -0
- data/LICENSE +2 -2
- data/README.md +154 -100
- data/VERSION +1 -0
- data/bin/fig +4 -182
- data/lib/fig.rb +222 -0
- data/lib/fig/applicationconfiguration.rb +52 -0
- data/lib/fig/backtrace.rb +6 -6
- data/lib/fig/configfileerror.rb +15 -0
- data/lib/fig/environment.rb +46 -26
- data/lib/fig/figrc.rb +105 -0
- data/lib/fig/grammar.treetop +1 -1
- data/lib/fig/log4rconfigerror.rb +14 -0
- data/lib/fig/logging.rb +131 -0
- data/lib/fig/networkerror.rb +7 -0
- data/lib/fig/notfounderror.rb +4 -0
- data/lib/fig/options.rb +191 -54
- data/lib/fig/os.rb +73 -74
- data/lib/fig/package.rb +30 -30
- data/lib/fig/packageerror.rb +7 -0
- data/lib/fig/parser.rb +5 -8
- data/lib/fig/repository.rb +44 -28
- data/lib/fig/repositoryerror.rb +7 -0
- data/lib/fig/retriever.rb +26 -17
- data/lib/fig/urlaccesserror.rb +9 -0
- data/lib/fig/userinputerror.rb +4 -0
- data/lib/fig/windows.rb +3 -3
- metadata +234 -50
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
|
-
|
17
|
-
|
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
|
data/lib/fig/repository.rb
CHANGED
@@ -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,
|
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(
|
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
|
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 +
|
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 =
|
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
|
118
|
-
|
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
|
-
|
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,
|
146
|
+
file = File.join(dir, '.fig')
|
137
147
|
if not File.exist?(file)
|
138
|
-
file = File.join(dir,
|
148
|
+
file = File.join(dir, 'package.fig')
|
139
149
|
end
|
140
150
|
if not File.exist?(file)
|
141
|
-
|
142
|
-
|
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
|
-
|
150
|
-
|
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
|
-
|
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) +
|
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) +
|
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,
|
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
|
-
|
205
|
+
Logging.fatal 'Install failed, cleaning up.'
|
196
206
|
delete_local_package(package_name, version_name)
|
197
|
-
|
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),
|
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,
|
250
|
+
File.join(@local_repository_dir, 'tmp')
|
235
251
|
end
|
236
252
|
|
237
253
|
def package_missing?(package_name, version_name)
|
data/lib/fig/retriever.rb
CHANGED
@@ -1,35 +1,37 @@
|
|
1
1
|
require 'ostruct'
|
2
2
|
require 'set'
|
3
3
|
|
4
|
-
|
5
|
-
|
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,
|
15
|
+
@fig_dir = File.join(@base_dir, '.fig')
|
14
16
|
|
15
|
-
file = File.join(@fig_dir,
|
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
|
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
|
-
|
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 =
|
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,
|
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 <<
|
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
|
70
|
+
raise 'version mismatch in .figretrieve'
|
69
71
|
end
|
70
72
|
else
|
71
|
-
config =
|
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
|
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 !=
|
95
|
-
|
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
|
-
|
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
|
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(
|
28
|
+
tf = File.new('C:/tmp/fig_command.bat', 'w')
|
29
29
|
FileUtils.chmod(0755, tf.path)
|
30
|
-
File.open(tf.path,
|
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
|
-
|
5
|
-
|
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
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
113
|
-
|
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:
|
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
|
-
|
124
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
146
|
-
|
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:
|
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
|
-
|
157
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
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:
|
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
|
-
|
223
|
-
|
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:
|
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: *
|
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.
|
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
|
|