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