fig 0.1.71 → 0.1.73
Sign up to get free protection for your applications and to get access to all the features.
- 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
|