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 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
@@ -1,3 +1,3 @@
1
1
  module Fig
2
- VERSION = '0.1.71'
2
+ VERSION = '0.1.73'
3
3
  end
@@ -158,11 +158,19 @@ class Fig::Command
158
158
  end
159
159
 
160
160
  def set_up_update_lock()
161
- return if not @options.update_packages
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
- case @options.update_packages
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
@@ -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
@@ -17,6 +17,10 @@ class Fig::Command::Action::Clean
17
17
  return :required
18
18
  end
19
19
 
20
+ def modifies_repository?()
21
+ return true
22
+ end
23
+
20
24
  def load_base_package?()
21
25
  return false
22
26
  end
@@ -17,6 +17,10 @@ class Fig::Command::Action::DumpPackageDefinitionParsed
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
@@ -17,6 +17,10 @@ class Fig::Command::Action::DumpPackageDefinitionText
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
@@ -17,6 +17,10 @@ class Fig::Command::Action::Get
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
@@ -17,6 +17,10 @@ class Fig::Command::Action::ListConfigs
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
@@ -17,6 +17,10 @@ class Fig::Command::Action::ListLocal
17
17
  return :warn
18
18
  end
19
19
 
20
+ def modifies_repository?()
21
+ return false
22
+ end
23
+
20
24
  def load_base_package?()
21
25
  return nil # Don't care.
22
26
  end
@@ -17,6 +17,10 @@ class Fig::Command::Action::ListRemote
17
17
  return :warn
18
18
  end
19
19
 
20
+ def modifies_repository?()
21
+ return false
22
+ end
23
+
20
24
  def load_base_package?()
21
25
  return nil # Don't care.
22
26
  end
@@ -16,6 +16,10 @@ class Fig::Command::Action::ListVariables::Default
16
16
  return nil
17
17
  end
18
18
 
19
+ def modifies_repository?()
20
+ return false
21
+ end
22
+
19
23
  def load_base_package?()
20
24
  return true
21
25
  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|
@@ -23,6 +23,10 @@ module Fig::Command::Action::Role::Publish
23
23
  return true
24
24
  end
25
25
 
26
+ def modifies_repository?()
27
+ return true
28
+ end
29
+
26
30
  def load_base_package?()
27
31
  return true
28
32
  end
@@ -15,6 +15,10 @@ module Fig::Command::Action::Role::Update
15
15
  return true
16
16
  end
17
17
 
18
+ def modifies_repository?()
19
+ return true
20
+ end
21
+
18
22
  def load_base_package?()
19
23
  return true
20
24
  end
@@ -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 nil
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
@@ -14,4 +14,10 @@ class Fig::Command::Action::Update
14
14
  def options()
15
15
  return %w<--update>
16
16
  end
17
+
18
+ def prepare_repository(repository)
19
+ repository.update_unconditionally
20
+
21
+ return
22
+ end
17
23
  end
@@ -14,4 +14,10 @@ class Fig::Command::Action::UpdateIfMissing
14
14
  def options()
15
15
  return %w<--update-if-missing>
16
16
  end
17
+
18
+ def prepare_repository(repository)
19
+ repository.update_if_missing
20
+
21
+ return
22
+ end
17
23
  end
@@ -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, :unconditionally)
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, :if_missing)
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, update_packages)
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 TYPE
73
+ --update-lock-response {wait | fail | ignore}
74
74
 
75
75
  [{-s | --set} VARIABLE=VALUE]
76
76
  [{-p | --append} VARIABLE=VALUE]
@@ -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 resource_url {
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, resource_url
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 resource_url {
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, resource_url
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
@@ -101,6 +101,8 @@ class Fig::Parser
101
101
  end
102
102
 
103
103
  def check_for_bad_urls(package, descriptor)
104
+ return if not @application_config
105
+
104
106
  bad_urls = []
105
107
  package.walk_statements do |statement|
106
108
  statement.urls.each do |url|
@@ -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.url.text_value
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.url, 'URL/path', error_description
65
+ keyword_node, url_node, 'URL/path', error_description
66
66
  )
67
67
  }
68
68
 
@@ -26,7 +26,7 @@ class Fig::Repository
26
26
  VERSION_SUPPORTED = 1
27
27
 
28
28
  def self.is_url?(url)
29
- not (/ftp:\/\/|http:\/\/|file:\/\/|ssh:\/\// =~ url).nil?
29
+ not (/ftp:\/\/|https?:\/\/|file:\/\/|ssh:\/\// =~ url).nil?
30
30
  end
31
31
 
32
32
  def initialize(
@@ -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 = publish_package_content_and_derive_definition_file()
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 publish_package_content_and_derive_definition_file()
96
+ def derive_definition_file()
95
97
  @definition_file_lines = []
96
98
 
97
99
  add_package_metadata_comments()
98
- publish_package_content()
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.strip() + "\n"
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 publish_package_content()
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
- publish_asset(statement)
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 << @source_package.unparsed_text.gsub(/^/, '# ')
269
+ @definition_file_lines << '#'
270
+ @definition_file_lines <<
271
+ @source_package.unparsed_text.gsub(/^(?=[^\n]+$)/, '# ').gsub(/^$/, '#')
241
272
  end
242
273
 
243
274
  return
@@ -14,7 +14,7 @@ class Fig::Statement::Archive < Fig::Statement
14
14
  def initialize(line_column, source_description, url)
15
15
  super(line_column, source_description)
16
16
 
17
- @url = url
17
+ set_up_url(url)
18
18
  end
19
19
 
20
20
  def asset_name()
@@ -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.'
@@ -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
- VALUE_REGEX = %r< \A [^;:"<>|\s]+ \z >x
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
 
@@ -15,7 +15,7 @@ class Fig::Statement::Resource < Fig::Statement
15
15
  def initialize(line_column, source_description, url)
16
16
  super(line_column, source_description)
17
17
 
18
- @url = url
18
+ set_up_url(url)
19
19
  end
20
20
 
21
21
  def asset_name()
@@ -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
- VALUE_REGEX = %r< \A \S* \z >x
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.71
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-06-25 00:00:00.000000000 Z
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: &17242720 !ruby/object:Gem::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: *17242720
24
+ version_requirements: *11075420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: highline
27
- requirement: &17263920 !ruby/object:Gem::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: *17263920
35
+ version_requirements: *11074940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &17263440 !ruby/object:Gem::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: *17263440
46
+ version_requirements: *11074460
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: libarchive-static
49
- requirement: &17262880 !ruby/object:Gem::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: *17262880
57
+ version_requirements: *11074000
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: log4r
60
- requirement: &17262360 !ruby/object:Gem::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: *17262360
68
+ version_requirements: *11089880
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: net-netrc
71
- requirement: &17261880 !ruby/object:Gem::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: *17261880
79
+ version_requirements: *11089400
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: net-sftp
82
- requirement: &17261400 !ruby/object:Gem::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: *17261400
90
+ version_requirements: *11088900
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: net-ssh
93
- requirement: &17260900 !ruby/object:Gem::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: *17260900
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: &17259920 !ruby/object:Gem::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: *17259920
112
+ version_requirements: *11087940
124
113
  - !ruby/object:Gem::Dependency
125
114
  name: sys-admin
126
- requirement: &17259420 !ruby/object:Gem::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: *17259420
123
+ version_requirements: *11087460
135
124
  - !ruby/object:Gem::Dependency
136
125
  name: treetop
137
- requirement: &17258960 !ruby/object:Gem::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: *17258960
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