fig 0.1.71 → 0.1.73
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 +20 -0
- data/lib/fig.rb +1 -1
- data/lib/fig/command.rb +10 -7
- data/lib/fig/command/action.rb +10 -0
- data/lib/fig/command/action/clean.rb +4 -0
- data/lib/fig/command/action/dump_package_definition_parsed.rb +4 -0
- data/lib/fig/command/action/dump_package_definition_text.rb +4 -0
- data/lib/fig/command/action/get.rb +4 -0
- data/lib/fig/command/action/list_configs.rb +4 -0
- data/lib/fig/command/action/list_local.rb +4 -0
- data/lib/fig/command/action/list_remote.rb +4 -0
- data/lib/fig/command/action/list_variables/default.rb +4 -0
- data/lib/fig/command/action/role/has_sub_action.rb +5 -0
- data/lib/fig/command/action/role/list_walking_dependency_tree.rb +4 -0
- data/lib/fig/command/action/role/publish.rb +4 -0
- data/lib/fig/command/action/role/update.rb +4 -0
- data/lib/fig/command/action/run_command_line.rb +8 -0
- data/lib/fig/command/action/run_command_statement.rb +9 -4
- data/lib/fig/command/action/update.rb +6 -0
- data/lib/fig/command/action/update_if_missing.rb +6 -0
- data/lib/fig/command/options.rb +3 -5
- data/lib/fig/command/options/parser.rb +1 -1
- data/lib/fig/grammar.treetop +16 -23
- data/lib/fig/parser.rb +2 -0
- data/lib/fig/parser_package_build_state.rb +2 -2
- data/lib/fig/repository.rb +1 -1
- data/lib/fig/repository_package_publisher.rb +39 -8
- data/lib/fig/statement/archive.rb +1 -1
- data/lib/fig/statement/asset.rb +52 -0
- data/lib/fig/statement/path.rb +3 -1
- data/lib/fig/statement/resource.rb +1 -1
- data/lib/fig/statement/set.rb +3 -1
- metadata +24 -35
data/Changes
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
v0.1.73
|
2
|
+
|
3
|
+
Backwards incompatibilities:
|
4
|
+
|
5
|
+
- --update-lock-response is, for the time being, no longer supported on
|
6
|
+
Windows. Dealing with file locking on Windows is hard and we don't have
|
7
|
+
the time to figure it right now.
|
8
|
+
|
9
|
+
Bug fixes:
|
10
|
+
|
11
|
+
- FIG_HOME locking didn't cover all the situations that it should have, e.g.
|
12
|
+
the --clean option.
|
13
|
+
|
14
|
+
- Crash when --command-extra-args was specified without a package descriptor.
|
15
|
+
|
16
|
+
v0.1.72.beta.2
|
17
|
+
v0.1.72.beta.1
|
18
|
+
|
19
|
+
- Test releases
|
20
|
+
|
1
21
|
v0.1.71
|
2
22
|
|
3
23
|
Backwards incompatibilities:
|
data/lib/fig.rb
CHANGED
data/lib/fig/command.rb
CHANGED
@@ -158,11 +158,19 @@ class Fig::Command
|
|
158
158
|
end
|
159
159
|
|
160
160
|
def set_up_update_lock()
|
161
|
-
return if
|
161
|
+
return if @options.actions.none? {|action| action.modifies_repository?}
|
162
162
|
|
163
163
|
update_lock_response = @options.update_lock_response
|
164
164
|
return if update_lock_response == :ignore
|
165
165
|
|
166
|
+
if Fig::OperatingSystem.windows?
|
167
|
+
if ! update_lock_response.nil?
|
168
|
+
Fig::Logging.warn('At present, locking is not supported on Windows.')
|
169
|
+
end
|
170
|
+
|
171
|
+
return
|
172
|
+
end
|
173
|
+
|
166
174
|
@update_lock = Fig::UpdateLock.new(@options.home, update_lock_response)
|
167
175
|
|
168
176
|
# *sigh* Ruby 1.8 doesn't support close_on_exec(), so we've got to ensure
|
@@ -202,12 +210,7 @@ class Fig::Command
|
|
202
210
|
check_include_statements_versions?
|
203
211
|
)
|
204
212
|
|
205
|
-
|
206
|
-
when :unconditionally
|
207
|
-
@repository.update_unconditionally
|
208
|
-
when :if_missing
|
209
|
-
@repository.update_if_missing
|
210
|
-
end
|
213
|
+
@options.actions.each {|action| action.prepare_repository(@repository)}
|
211
214
|
|
212
215
|
return
|
213
216
|
end
|
data/lib/fig/command/action.rb
CHANGED
@@ -37,10 +37,20 @@ module Fig::Command::Action
|
|
37
37
|
return false
|
38
38
|
end
|
39
39
|
|
40
|
+
# Does the action care about command-line options that affect package
|
41
|
+
# contents, i.e. --resource/--archive?
|
40
42
|
def cares_about_package_content_options?()
|
41
43
|
return false
|
42
44
|
end
|
43
45
|
|
46
|
+
def modifies_repository?()
|
47
|
+
return NotImplementedError
|
48
|
+
end
|
49
|
+
|
50
|
+
def prepare_repository(repository)
|
51
|
+
return # Nothing by default.
|
52
|
+
end
|
53
|
+
|
44
54
|
def load_base_package?()
|
45
55
|
raise NotImplementedError
|
46
56
|
end
|
@@ -21,6 +21,11 @@ module Fig::Command::Action::Role::HasSubAction
|
|
21
21
|
return sub_action.descriptor_requirement()
|
22
22
|
end
|
23
23
|
|
24
|
+
def modifies_repository?()
|
25
|
+
check_sub_action_presence()
|
26
|
+
return sub_action.modifies_repository?
|
27
|
+
end
|
28
|
+
|
24
29
|
def load_base_package?()
|
25
30
|
check_sub_action_presence()
|
26
31
|
return sub_action.load_base_package?
|
@@ -9,6 +9,10 @@ module Fig::Command::Action; end
|
|
9
9
|
module Fig::Command::Action::Role; end
|
10
10
|
|
11
11
|
module Fig::Command::Action::Role::ListWalkingDependencyTree
|
12
|
+
def modifies_repository?()
|
13
|
+
return false
|
14
|
+
end
|
15
|
+
|
12
16
|
def walk_dependency_tree(base_package, config_names, backtrace, depth, &block)
|
13
17
|
config_names.each do
|
14
18
|
|config_name|
|
@@ -17,6 +17,10 @@ class Fig::Command::Action::RunCommandLine
|
|
17
17
|
return nil
|
18
18
|
end
|
19
19
|
|
20
|
+
def modifies_repository?()
|
21
|
+
return false
|
22
|
+
end
|
23
|
+
|
20
24
|
def load_base_package?()
|
21
25
|
return true
|
22
26
|
end
|
@@ -35,11 +39,15 @@ class Fig::Command::Action::RunCommandLine
|
|
35
39
|
|
36
40
|
def configure(options)
|
37
41
|
@command_line = options.shell_command
|
42
|
+
|
43
|
+
return
|
38
44
|
end
|
39
45
|
|
40
46
|
def execute()
|
41
47
|
@execution_context.environment.execute_shell(@command_line) do
|
42
48
|
|command| @execution_context.operating_system.shell_exec command
|
43
49
|
end
|
50
|
+
|
51
|
+
return EXIT_SUCCESS
|
44
52
|
end
|
45
53
|
end
|
@@ -14,7 +14,11 @@ class Fig::Command::Action::RunCommandStatement
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def descriptor_requirement()
|
17
|
-
return
|
17
|
+
return :required
|
18
|
+
end
|
19
|
+
|
20
|
+
def modifies_repository?()
|
21
|
+
return false
|
18
22
|
end
|
19
23
|
|
20
24
|
def load_base_package?()
|
@@ -36,17 +40,18 @@ class Fig::Command::Action::RunCommandStatement
|
|
36
40
|
def configure(options)
|
37
41
|
@extra_argv = options.command_extra_argv
|
38
42
|
@descriptor = options.descriptor
|
43
|
+
|
44
|
+
return
|
39
45
|
end
|
40
46
|
|
41
47
|
def execute()
|
42
48
|
environment = @execution_context.environment
|
43
49
|
base_package = @execution_context.base_package
|
44
50
|
|
45
|
-
# TODO: Elliot's current theory is that this is pointless as long as
|
46
|
-
# we've applied the config.
|
47
|
-
environment.include_config(base_package, @descriptor, nil)
|
48
51
|
environment.execute_config(
|
49
52
|
base_package, @descriptor, @extra_argv || []
|
50
53
|
) { |command| @execution_context.operating_system.shell_exec command }
|
54
|
+
|
55
|
+
return EXIT_SUCCESS
|
51
56
|
end
|
52
57
|
end
|
data/lib/fig/command/options.rb
CHANGED
@@ -53,7 +53,6 @@ class Fig::Command::Options
|
|
53
53
|
attr_reader :parser
|
54
54
|
attr_reader :shell_command
|
55
55
|
attr_reader :update_lock_response
|
56
|
-
attr_reader :update_packages
|
57
56
|
attr_reader :variable_to_get
|
58
57
|
attr_accessor :version_message
|
59
58
|
|
@@ -462,7 +461,7 @@ class Fig::Command::Options
|
|
462
461
|
'--update',
|
463
462
|
'check remote repo for updates and download to $FIG_HOME as necessary'
|
464
463
|
) do
|
465
|
-
set_update_action(Fig::Command::Action::Update
|
464
|
+
set_update_action(Fig::Command::Action::Update)
|
466
465
|
end
|
467
466
|
|
468
467
|
@parser.on(
|
@@ -470,7 +469,7 @@ class Fig::Command::Options
|
|
470
469
|
'--update-if-missing',
|
471
470
|
'check remote repo for updates only if package missing from $FIG_HOME'
|
472
471
|
) do
|
473
|
-
set_update_action(Fig::Command::Action::UpdateIfMissing
|
472
|
+
set_update_action(Fig::Command::Action::UpdateIfMissing)
|
474
473
|
end
|
475
474
|
|
476
475
|
@parser.on(
|
@@ -558,7 +557,7 @@ class Fig::Command::Options
|
|
558
557
|
return
|
559
558
|
end
|
560
559
|
|
561
|
-
def set_update_action(update_action_class
|
560
|
+
def set_update_action(update_action_class)
|
562
561
|
update_action = update_action_class.new
|
563
562
|
if @update_action
|
564
563
|
raise Fig::Command::OptionError.new(
|
@@ -567,7 +566,6 @@ class Fig::Command::Options
|
|
567
566
|
end
|
568
567
|
|
569
568
|
@update_action = update_action
|
570
|
-
@update_packages = update_packages
|
571
569
|
end
|
572
570
|
|
573
571
|
def new_variable_statement(option, name_value, statement_class)
|
@@ -70,7 +70,7 @@ Local repository maintenance:
|
|
70
70
|
Standard options (represented as "[...]" above):
|
71
71
|
|
72
72
|
[-u | --update | -m | --update-if-missing]
|
73
|
-
--update-lock-response
|
73
|
+
--update-lock-response {wait | fail | ignore}
|
74
74
|
|
75
75
|
[{-s | --set} VARIABLE=VALUE]
|
76
76
|
[{-p | --append} VARIABLE=VALUE]
|
data/lib/fig/grammar.treetop
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Treetop (http://treetop.rubyforge.org/) grammar for package definitions.
|
2
2
|
|
3
|
+
# Some aspects of this grammar are significantly dumber than they could be
|
4
|
+
# because:
|
5
|
+
#
|
6
|
+
# * We want to treat statements as identically as possible to their
|
7
|
+
# command-line equivalents.
|
8
|
+
# * Treetop parse errors are pretty inscrutable at times and we can make
|
9
|
+
# error messages clearer by validating a lot of the terminals ourselves.
|
10
|
+
|
3
11
|
module Fig
|
4
12
|
grammar Fig
|
5
13
|
rule package
|
@@ -14,28 +22,30 @@ module Fig
|
|
14
22
|
archive / resource / retrieve / config
|
15
23
|
end
|
16
24
|
|
17
|
-
# Note that these are being parsed like they allow globbing despite
|
18
|
-
# globbing not being performed.
|
19
25
|
rule archive
|
20
|
-
statement_start:"archive" ws
|
26
|
+
statement_start:"archive" ws url:asset_url ws {
|
21
27
|
def to_package_statement(build_state)
|
22
28
|
return build_state.new_asset_statement(
|
23
|
-
Statement::Archive, statement_start,
|
29
|
+
Statement::Archive, statement_start, url
|
24
30
|
)
|
25
31
|
end
|
26
32
|
}
|
27
33
|
end
|
28
34
|
|
29
35
|
rule resource
|
30
|
-
statement_start:"resource" ws
|
36
|
+
statement_start:"resource" ws url:asset_url ws {
|
31
37
|
def to_package_statement(build_state)
|
32
38
|
return build_state.new_asset_statement(
|
33
|
-
Statement::Resource, statement_start,
|
39
|
+
Statement::Resource, statement_start, url
|
34
40
|
)
|
35
41
|
end
|
36
42
|
}
|
37
43
|
end
|
38
44
|
|
45
|
+
rule asset_url
|
46
|
+
[\S]+
|
47
|
+
end
|
48
|
+
|
39
49
|
rule retrieve
|
40
50
|
statement_start:"retrieve" ws var:environment_variable_name "->" path:retrieve_path ws {
|
41
51
|
def to_package_statement(build_state)
|
@@ -126,23 +136,6 @@ module Fig
|
|
126
136
|
[\S]+
|
127
137
|
end
|
128
138
|
|
129
|
-
rule resource_url
|
130
|
-
# Unquoted allows globbing for files, quoted does not.
|
131
|
-
#
|
132
|
-
# Unquoted, anything but:
|
133
|
-
# @ - To allow for package substitution
|
134
|
-
# "<>| - Characters not allowed in filenames on Windows
|
135
|
-
# \s - Necessary for the "ws" token to work
|
136
|
-
(url:[^@"<>|\s]+ ws)
|
137
|
-
|
138
|
-
# Quoted, anything but:
|
139
|
-
# @ - To allow for package substitution
|
140
|
-
# "<>| - Characters not allowed in filenames on Windows
|
141
|
-
# *?\[\]{} - Characters significant to Dir.glob()
|
142
|
-
# \s - We just don't want these. :] (May need to allow space.)
|
143
|
-
/ ('"' url:[^@"<>|*?\[\]{}\s]+ '"' ws)
|
144
|
-
end
|
145
|
-
|
146
139
|
rule ws
|
147
140
|
[ \n\r\t]+
|
148
141
|
end
|
data/lib/fig/parser.rb
CHANGED
@@ -56,13 +56,13 @@ class Fig::ParserPackageBuildState
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def new_asset_statement(statement_class, keyword_node, url_node)
|
59
|
-
url = url_node.
|
59
|
+
url = url_node.text_value
|
60
60
|
|
61
61
|
statement_class.validate_url(url) {
|
62
62
|
|error_description|
|
63
63
|
|
64
64
|
raise_invalid_value_parse_error(
|
65
|
-
keyword_node, url_node
|
65
|
+
keyword_node, url_node, 'URL/path', error_description
|
66
66
|
)
|
67
67
|
}
|
68
68
|
|
data/lib/fig/repository.rb
CHANGED
@@ -10,6 +10,7 @@ require 'fig/logging'
|
|
10
10
|
require 'fig/not_found_error'
|
11
11
|
require 'fig/package_cache'
|
12
12
|
require 'fig/package_descriptor'
|
13
|
+
require 'fig/package_parse_error'
|
13
14
|
require 'fig/parser'
|
14
15
|
require 'fig/repository'
|
15
16
|
require 'fig/repository_error'
|
@@ -41,9 +42,10 @@ class Fig::RepositoryPackagePublisher
|
|
41
42
|
@operating_system.delete_and_recreate_directory(@local_dir_for_package)
|
42
43
|
|
43
44
|
fig_file = File.join(temp_dir, Fig::Repository::PACKAGE_FILE_IN_REPO)
|
44
|
-
content =
|
45
|
+
content = derive_definition_file
|
45
46
|
@operating_system.write(fig_file, content)
|
46
47
|
|
48
|
+
publish_package_contents
|
47
49
|
if not @local_only
|
48
50
|
@operating_system.upload(fig_file, remote_fig_file_for_package())
|
49
51
|
end
|
@@ -91,18 +93,33 @@ class Fig::RepositoryPackagePublisher
|
|
91
93
|
return
|
92
94
|
end
|
93
95
|
|
94
|
-
def
|
96
|
+
def derive_definition_file()
|
95
97
|
@definition_file_lines = []
|
96
98
|
|
97
99
|
add_package_metadata_comments()
|
98
|
-
|
100
|
+
add_statements_to_publish_and_create_resource_archive()
|
99
101
|
add_unparsed_text()
|
100
102
|
|
101
103
|
@definition_file_lines.flatten!
|
102
104
|
file_content = @definition_file_lines.join("\n")
|
103
105
|
file_content.gsub!(/\n{3,}/, "\n\n")
|
106
|
+
file_content.strip!
|
107
|
+
file_content << "\n"
|
108
|
+
|
109
|
+
begin
|
110
|
+
Fig::Parser.new(nil, false).parse_package(
|
111
|
+
@descriptor,
|
112
|
+
'the directory should not matter for a consistency check',
|
113
|
+
'<package to be published>',
|
114
|
+
file_content
|
115
|
+
)
|
116
|
+
rescue Fig::PackageParseError => error
|
117
|
+
raise \
|
118
|
+
"Bug in code! Could not parse package definition to be published.\n" +
|
119
|
+
"#{error}\n\nGenerated contents:\n#{file_content}"
|
120
|
+
end
|
104
121
|
|
105
|
-
return file_content
|
122
|
+
return file_content
|
106
123
|
end
|
107
124
|
|
108
125
|
def add_package_metadata_comments()
|
@@ -142,7 +159,7 @@ class Fig::RepositoryPackagePublisher
|
|
142
159
|
# files (those where the statement references a URL as opposed to a local
|
143
160
|
# file) and then copies all files into the local repository and the remote
|
144
161
|
# repository (if not a local-only publish).
|
145
|
-
def
|
162
|
+
def add_statements_to_publish_and_create_resource_archive()
|
146
163
|
initialize_statements_to_publish()
|
147
164
|
create_resource_archive()
|
148
165
|
|
@@ -150,7 +167,8 @@ class Fig::RepositoryPackagePublisher
|
|
150
167
|
|statement|
|
151
168
|
|
152
169
|
if statement.is_asset?
|
153
|
-
|
170
|
+
@definition_file_lines <<
|
171
|
+
statement.class.new(nil, nil, statement.asset_name).unparse('')
|
154
172
|
else
|
155
173
|
@definition_file_lines << statement.unparse('')
|
156
174
|
end
|
@@ -194,6 +212,18 @@ class Fig::RepositoryPackagePublisher
|
|
194
212
|
return
|
195
213
|
end
|
196
214
|
|
215
|
+
def publish_package_contents()
|
216
|
+
@statements_to_publish.each do
|
217
|
+
|statement|
|
218
|
+
|
219
|
+
if statement.is_asset?
|
220
|
+
publish_asset(statement)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
return
|
225
|
+
end
|
226
|
+
|
197
227
|
def publish_asset(asset_statement)
|
198
228
|
asset_name = asset_statement.asset_name()
|
199
229
|
asset_remote = "#{remote_dir_for_package()}/#{asset_name}"
|
@@ -236,8 +266,9 @@ class Fig::RepositoryPackagePublisher
|
|
236
266
|
|
237
267
|
@definition_file_lines << ''
|
238
268
|
@definition_file_lines << '# Original, unparsed package text:'
|
239
|
-
@definition_file_lines << '#
|
240
|
-
@definition_file_lines <<
|
269
|
+
@definition_file_lines << '#'
|
270
|
+
@definition_file_lines <<
|
271
|
+
@source_package.unparsed_text.gsub(/^(?=[^\n]+$)/, '# ').gsub(/^$/, '#')
|
241
272
|
end
|
242
273
|
|
243
274
|
return
|
data/lib/fig/statement/asset.rb
CHANGED
@@ -11,6 +11,10 @@ module Fig::Statement::Asset
|
|
11
11
|
return
|
12
12
|
end
|
13
13
|
|
14
|
+
def glob?()
|
15
|
+
return @glob
|
16
|
+
end
|
17
|
+
|
14
18
|
def urls()
|
15
19
|
return [ url() ]
|
16
20
|
end
|
@@ -25,8 +29,56 @@ module Fig::Statement::Asset
|
|
25
29
|
return url().split('/').last()
|
26
30
|
end
|
27
31
|
|
32
|
+
private
|
33
|
+
|
34
|
+
def set_up_url(url)
|
35
|
+
# Damn you Ruby 1.8!!!!
|
36
|
+
if url[0..0] == '"'
|
37
|
+
@url = url[1..-2]
|
38
|
+
@glob = true
|
39
|
+
else
|
40
|
+
@url = url
|
41
|
+
@glob = false
|
42
|
+
end
|
43
|
+
|
44
|
+
return
|
45
|
+
end
|
46
|
+
|
28
47
|
module ClassMethods
|
29
48
|
def validate_url(url)
|
49
|
+
# Damn you Ruby 1.8!!!!
|
50
|
+
if url[0..0] == '"' && url[-1..-1] != '"' ||
|
51
|
+
url[0..0] != '"' && url[-1..-1] == '"'
|
52
|
+
yield 'has unbalanced quotes.'
|
53
|
+
return
|
54
|
+
end
|
55
|
+
|
56
|
+
if url[0..0] == '"'
|
57
|
+
if url.length < 3
|
58
|
+
yield 'is empty'
|
59
|
+
return
|
60
|
+
end
|
61
|
+
|
62
|
+
url = url[1..-2]
|
63
|
+
end
|
64
|
+
|
65
|
+
if url.include? '@'
|
66
|
+
yield %q<contains an "@", which isn't permitted in order to allow for package substitution.>
|
67
|
+
return
|
68
|
+
end
|
69
|
+
|
70
|
+
if url =~ / ( ["<>|] ) /x
|
71
|
+
yield %Q<contains a "#{$1}", which isn't permitted because Windows doesn't allow it in file names.>
|
72
|
+
return
|
73
|
+
end
|
74
|
+
|
75
|
+
if url =~ / \s /x
|
76
|
+
# We may need to allow a space character in the future, but this will
|
77
|
+
# require a change to the grammar.
|
78
|
+
yield %q<contains whitespace.>
|
79
|
+
return
|
80
|
+
end
|
81
|
+
|
30
82
|
# "config" is a reasonable asset name, so we let that pass.
|
31
83
|
if Fig::Parser.strict_keyword?(url)
|
32
84
|
yield 'is a keyword.'
|
data/lib/fig/statement/path.rb
CHANGED
@@ -5,7 +5,9 @@ module Fig; end
|
|
5
5
|
# A statement that specifies or modifies a path environment variable, e.g.
|
6
6
|
# "append", "path", "add" (though those are all synonyms).
|
7
7
|
class Fig::Statement::Path < Fig::Statement
|
8
|
-
|
8
|
+
# We block single-quotes right now in order to allow for using them for
|
9
|
+
# quoting later.
|
10
|
+
VALUE_REGEX = %r< \A [^;:'"<>|\s]+ \z >x
|
9
11
|
ARGUMENT_DESCRIPTION =
|
10
12
|
%q[The value must look like "NAME=VALUE". VALUE cannot contain any of ";:<>|", double quotes, or whitespace.]
|
11
13
|
|
data/lib/fig/statement/set.rb
CHANGED
@@ -4,7 +4,9 @@ module Fig; end
|
|
4
4
|
|
5
5
|
# A statement that sets the value of an environment variable.
|
6
6
|
class Fig::Statement::Set < Fig::Statement
|
7
|
-
|
7
|
+
# We block quotes right now in order to allow for using them for
|
8
|
+
# quoting later.
|
9
|
+
VALUE_REGEX = %r< \A [^\s\\'"]* \z >x
|
8
10
|
ARGUMENT_DESCRIPTION =
|
9
11
|
%q<The value must look like "NAME=VALUE"; VALUE cannot contain whitespace though it can be empty.>
|
10
12
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.73
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
16
|
-
requirement: &
|
16
|
+
requirement: &11075420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.5.8
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11075420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: highline
|
27
|
-
requirement: &
|
27
|
+
requirement: &11074940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.6.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11074940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: json
|
38
|
-
requirement: &
|
38
|
+
requirement: &11074460 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.6.5
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *11074460
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: libarchive-static
|
49
|
-
requirement: &
|
49
|
+
requirement: &11074000 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *11074000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: log4r
|
60
|
-
requirement: &
|
60
|
+
requirement: &11089880 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.1.5
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *11089880
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: net-netrc
|
71
|
-
requirement: &
|
71
|
+
requirement: &11089400 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.2.2
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *11089400
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: net-sftp
|
82
|
-
requirement: &
|
82
|
+
requirement: &11088900 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 2.0.4
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *11088900
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: net-ssh
|
93
|
-
requirement: &
|
93
|
+
requirement: &11088420 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,21 +98,10 @@ dependencies:
|
|
98
98
|
version: 2.0.15
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
102
|
-
- !ruby/object:Gem::Dependency
|
103
|
-
name: polyglot
|
104
|
-
requirement: &17260380 !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.2.9
|
110
|
-
type: :runtime
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: *17260380
|
101
|
+
version_requirements: *11088420
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: rdoc
|
115
|
-
requirement: &
|
104
|
+
requirement: &11087940 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,10 +109,10 @@ dependencies:
|
|
120
109
|
version: '3.12'
|
121
110
|
type: :runtime
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *11087940
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: sys-admin
|
126
|
-
requirement: &
|
115
|
+
requirement: &11087460 !ruby/object:Gem::Requirement
|
127
116
|
none: false
|
128
117
|
requirements:
|
129
118
|
- - ! '>='
|
@@ -131,10 +120,10 @@ dependencies:
|
|
131
120
|
version: 1.5.6
|
132
121
|
type: :runtime
|
133
122
|
prerelease: false
|
134
|
-
version_requirements: *
|
123
|
+
version_requirements: *11087460
|
135
124
|
- !ruby/object:Gem::Dependency
|
136
125
|
name: treetop
|
137
|
-
requirement: &
|
126
|
+
requirement: &11086980 !ruby/object:Gem::Requirement
|
138
127
|
none: false
|
139
128
|
requirements:
|
140
129
|
- - ! '>='
|
@@ -142,7 +131,7 @@ dependencies:
|
|
142
131
|
version: 1.4.2
|
143
132
|
type: :runtime
|
144
133
|
prerelease: false
|
145
|
-
version_requirements: *
|
134
|
+
version_requirements: *11086980
|
146
135
|
description: Fig is a utility for configuring environments and managing dependencies
|
147
136
|
across a team of developers. Given a list of packages and a command to run, Fig
|
148
137
|
builds environment variables named in those packages (e.g., CLASSPATH), then executes
|