fig 0.1.57 → 0.1.59
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 +80 -0
- data/VERSION +1 -1
- data/bin/fig-debug +12 -0
- data/bin/fig.bat +1 -0
- data/lib/fig/applicationconfiguration.rb +41 -41
- data/lib/fig/backtrace.rb +28 -30
- data/lib/fig/command.rb +52 -112
- data/lib/fig/command/listing.rb +207 -41
- data/lib/fig/command/packageload.rb +137 -0
- data/lib/fig/environment.rb +59 -72
- data/lib/fig/environmentvariables.rb +44 -0
- data/lib/fig/environmentvariables/caseinsensitive.rb +49 -0
- data/lib/fig/environmentvariables/casesensitive.rb +30 -0
- data/lib/fig/grammar.treetop +60 -35
- data/lib/fig/log4r/outputter.rb +96 -0
- data/lib/fig/logging.rb +2 -1
- data/lib/fig/logging/colorizable.rb +14 -0
- data/lib/fig/nosuchpackageconfigerror.rb +15 -0
- data/lib/fig/operatingsystem.rb +24 -13
- data/lib/fig/options.rb +70 -20
- data/lib/fig/package.rb +25 -26
- data/lib/fig/packagecache.rb +3 -3
- data/lib/fig/packagedescriptor.rb +36 -19
- data/lib/fig/packageparseerror.rb +7 -0
- data/lib/fig/parser.rb +76 -39
- data/lib/fig/repository.rb +131 -93
- data/lib/fig/retriever.rb +61 -39
- data/lib/fig/statement.rb +24 -2
- data/lib/fig/statement/archive.rb +4 -6
- data/lib/fig/statement/command.rb +4 -6
- data/lib/fig/statement/configuration.rb +7 -9
- data/lib/fig/statement/include.rb +49 -32
- data/lib/fig/statement/override.rb +7 -8
- data/lib/fig/statement/path.rb +4 -6
- data/lib/fig/statement/publish.rb +4 -11
- data/lib/fig/statement/resource.rb +4 -6
- data/lib/fig/statement/retrieve.rb +4 -6
- data/lib/fig/statement/set.rb +4 -6
- data/lib/fig/urlaccesserror.rb +4 -5
- metadata +52 -215
- data/LICENSE +0 -27
- data/README.md +0 -526
- data/TODO +0 -4
- data/lib/fig/packageerror.rb +0 -8
- data/lib/fig/windows.rb +0 -44
data/lib/fig/environment.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Fig
|
|
|
19
19
|
|
|
20
20
|
def initialize(repository, variables_override, retriever)
|
|
21
21
|
@repository = repository
|
|
22
|
-
@variables = variables_override ||
|
|
22
|
+
@variables = variables_override || OperatingSystem.get_environment_variables
|
|
23
23
|
@retrieve_vars = {}
|
|
24
24
|
@packages = {}
|
|
25
25
|
@retriever = retriever
|
|
@@ -42,7 +42,7 @@ module Fig
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
def register_package(package)
|
|
45
|
-
name = package.
|
|
45
|
+
name = package.name
|
|
46
46
|
|
|
47
47
|
if get_package(name)
|
|
48
48
|
Logging.fatal %Q<There is already a package with the name "#{name}".>
|
|
@@ -54,8 +54,8 @@ module Fig
|
|
|
54
54
|
return
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
def get_package(
|
|
58
|
-
return @packages[
|
|
57
|
+
def get_package(name)
|
|
58
|
+
return @packages[name]
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def packages
|
|
@@ -76,7 +76,7 @@ module Fig
|
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def execute_shell(command)
|
|
79
|
-
with_environment do
|
|
79
|
+
@variables.with_environment do
|
|
80
80
|
yield command.map{|arg| expand_command_line_argument(arg)}
|
|
81
81
|
end
|
|
82
82
|
|
|
@@ -84,7 +84,7 @@ module Fig
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def execute_command(command, args, package)
|
|
87
|
-
with_environment do
|
|
87
|
+
@variables.with_environment do
|
|
88
88
|
argument =
|
|
89
89
|
expand_command_line_argument(
|
|
90
90
|
"#{command.command} #{args.join(' ')}"
|
|
@@ -96,8 +96,8 @@ module Fig
|
|
|
96
96
|
return
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
def find_config_name_in_package(
|
|
100
|
-
package = get_package(
|
|
99
|
+
def find_config_name_in_package(name)
|
|
100
|
+
package = get_package(name)
|
|
101
101
|
if not package
|
|
102
102
|
return Package::DEFAULT_CONFIG
|
|
103
103
|
end
|
|
@@ -105,12 +105,18 @@ module Fig
|
|
|
105
105
|
return package.primary_config_name || Package::DEFAULT_CONFIG
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
-
def execute_config(base_package,
|
|
109
|
-
config_name
|
|
108
|
+
def execute_config(base_package, descriptor, args, &block)
|
|
109
|
+
config_name =
|
|
110
|
+
descriptor.config || find_config_name_in_package(descriptor.name)
|
|
111
|
+
|
|
112
|
+
name = descriptor.name || base_package.name
|
|
110
113
|
package = lookup_package(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Backtrace.new(
|
|
114
|
+
name,
|
|
115
|
+
descriptor.version,
|
|
116
|
+
Backtrace.new(
|
|
117
|
+
nil,
|
|
118
|
+
PackageDescriptor.new(name, descriptor.version, config_name)
|
|
119
|
+
)
|
|
114
120
|
)
|
|
115
121
|
|
|
116
122
|
command = package[config_name].command
|
|
@@ -126,11 +132,13 @@ module Fig
|
|
|
126
132
|
def apply_config_statement(base_package, statement, backtrace)
|
|
127
133
|
case statement
|
|
128
134
|
when Statement::Path
|
|
129
|
-
|
|
135
|
+
prepend_variable(base_package, statement.name, statement.value)
|
|
130
136
|
when Statement::Set
|
|
131
137
|
set_variable(base_package, statement.name, statement.value)
|
|
132
138
|
when Statement::Include
|
|
133
|
-
include_config(
|
|
139
|
+
include_config(
|
|
140
|
+
base_package, statement.descriptor, statement.overrides, backtrace
|
|
141
|
+
)
|
|
134
142
|
when Statement::Command
|
|
135
143
|
# ignore
|
|
136
144
|
else
|
|
@@ -140,23 +148,36 @@ module Fig
|
|
|
140
148
|
return
|
|
141
149
|
end
|
|
142
150
|
|
|
143
|
-
def include_config(base_package,
|
|
151
|
+
def include_config(base_package, descriptor, overrides, backtrace)
|
|
152
|
+
resolved_descriptor = nil
|
|
153
|
+
|
|
144
154
|
# Check to see if this include has been overridden.
|
|
145
155
|
if backtrace
|
|
146
|
-
override = backtrace.get_override(
|
|
156
|
+
override = backtrace.get_override(
|
|
157
|
+
descriptor.name || base_package.name
|
|
158
|
+
)
|
|
147
159
|
if override
|
|
148
|
-
|
|
160
|
+
resolved_descriptor =
|
|
161
|
+
PackageDescriptor.new(
|
|
162
|
+
descriptor.name, override, descriptor.config
|
|
163
|
+
)
|
|
149
164
|
end
|
|
150
165
|
end
|
|
151
|
-
|
|
166
|
+
resolved_descriptor ||= descriptor
|
|
167
|
+
|
|
168
|
+
new_backtrace = Backtrace.new(backtrace, resolved_descriptor)
|
|
152
169
|
overrides.each do |override|
|
|
153
|
-
new_backtrace.add_override(override.package_name, override.
|
|
170
|
+
new_backtrace.add_override(override.package_name, override.version)
|
|
154
171
|
end
|
|
155
172
|
package = lookup_package(
|
|
156
|
-
|
|
173
|
+
resolved_descriptor.name || base_package.name,
|
|
174
|
+
resolved_descriptor.version,
|
|
175
|
+
new_backtrace
|
|
157
176
|
)
|
|
158
177
|
apply_config(
|
|
159
|
-
package,
|
|
178
|
+
package,
|
|
179
|
+
resolved_descriptor.config || Package::DEFAULT_CONFIG,
|
|
180
|
+
new_backtrace
|
|
160
181
|
)
|
|
161
182
|
|
|
162
183
|
return
|
|
@@ -164,70 +185,39 @@ module Fig
|
|
|
164
185
|
|
|
165
186
|
private
|
|
166
187
|
|
|
167
|
-
def get_system_environment_variables
|
|
168
|
-
vars = {}
|
|
169
|
-
ENV.each { |key,value| vars[key]=value }
|
|
170
|
-
|
|
171
|
-
return vars
|
|
172
|
-
end
|
|
173
|
-
|
|
174
188
|
def set_variable(base_package, name, value)
|
|
175
189
|
@variables[name] = expand_and_retrieve_variable_value(base_package, name, value)
|
|
176
190
|
|
|
177
191
|
return
|
|
178
192
|
end
|
|
179
193
|
|
|
180
|
-
def
|
|
194
|
+
def prepend_variable(base_package, name, value)
|
|
181
195
|
value = expand_and_retrieve_variable_value(base_package, name, value)
|
|
182
|
-
|
|
183
|
-
# comparison. It also assumes all env vars will be in upcase
|
|
184
|
-
# in package.fig
|
|
185
|
-
prev = nil
|
|
186
|
-
@variables.each do |key, val|
|
|
187
|
-
if key.upcase == name.upcase
|
|
188
|
-
name = key
|
|
189
|
-
prev = val
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
if prev
|
|
193
|
-
@variables[name] = value + File::PATH_SEPARATOR + prev
|
|
194
|
-
else
|
|
195
|
-
@variables[name] = value
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
return
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
def with_environment
|
|
202
|
-
old_env = {}
|
|
203
|
-
begin
|
|
204
|
-
@variables.each { |key,value| old_env[key] = ENV[key]; ENV[key] = value }
|
|
205
|
-
yield
|
|
206
|
-
ensure
|
|
207
|
-
old_env.each { |key,value| ENV[key] = value }
|
|
208
|
-
end
|
|
196
|
+
@variables.prepend_variable(name, value)
|
|
209
197
|
|
|
210
198
|
return
|
|
211
199
|
end
|
|
212
200
|
|
|
213
|
-
def lookup_package(
|
|
214
|
-
package = get_package(
|
|
201
|
+
def lookup_package(name, version, backtrace)
|
|
202
|
+
package = get_package(name)
|
|
215
203
|
if package.nil?
|
|
216
|
-
if not
|
|
217
|
-
Logging.fatal "No version specified for #{
|
|
204
|
+
if not version
|
|
205
|
+
Logging.fatal "No version specified for #{name}."
|
|
218
206
|
raise RepositoryError.new
|
|
219
207
|
end
|
|
220
208
|
|
|
221
|
-
package = @repository.get_package(
|
|
209
|
+
package = @repository.get_package(
|
|
210
|
+
PackageDescriptor.new(name, version, nil)
|
|
211
|
+
)
|
|
222
212
|
package.backtrace = backtrace
|
|
223
|
-
@packages[
|
|
224
|
-
elsif
|
|
213
|
+
@packages[name] = package
|
|
214
|
+
elsif version && version != package.version
|
|
225
215
|
string_handle = StringIO.new
|
|
226
216
|
backtrace.dump(string_handle) if backtrace
|
|
227
217
|
package.backtrace.dump(string_handle) if package.backtrace
|
|
228
218
|
stacktrace = string_handle.string
|
|
229
219
|
Logging.fatal \
|
|
230
|
-
"Version mismatch: #{
|
|
220
|
+
"Version mismatch: #{name}" \
|
|
231
221
|
+ ( stacktrace.empty? ? '' : "\n#{stacktrace}" )
|
|
232
222
|
raise RepositoryError.new
|
|
233
223
|
end
|
|
@@ -238,7 +228,7 @@ module Fig
|
|
|
238
228
|
# Replace @ symbol with the package's directory, "[package]" with the
|
|
239
229
|
# package name.
|
|
240
230
|
def expand_and_retrieve_variable_value(base_package, name, value)
|
|
241
|
-
return value unless base_package && base_package.
|
|
231
|
+
return value unless base_package && base_package.name
|
|
242
232
|
|
|
243
233
|
file = expand_path(value, base_package)
|
|
244
234
|
|
|
@@ -259,8 +249,8 @@ module Fig
|
|
|
259
249
|
target = File.join(target, File.basename(file))
|
|
260
250
|
end
|
|
261
251
|
end
|
|
262
|
-
@retriever.
|
|
263
|
-
base_package.
|
|
252
|
+
@retriever.with_package_version(
|
|
253
|
+
base_package.name, base_package.version
|
|
264
254
|
) do
|
|
265
255
|
@retriever.retrieve(file, target)
|
|
266
256
|
end
|
|
@@ -335,10 +325,7 @@ module Fig
|
|
|
335
325
|
|
|
336
326
|
def translate_retrieve_variables(base_package, name)
|
|
337
327
|
return \
|
|
338
|
-
@retrieve_vars[name].gsub(
|
|
339
|
-
/ \[package\] /x,
|
|
340
|
-
base_package.package_name
|
|
341
|
-
)
|
|
328
|
+
@retrieve_vars[name].gsub(/ \[package\] /x, base_package.name)
|
|
342
329
|
end
|
|
343
330
|
end
|
|
344
331
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Fig; end;
|
|
2
|
+
|
|
3
|
+
# Abstract manager of a set of environment variables.
|
|
4
|
+
module Fig::EnvironmentVariables
|
|
5
|
+
def initialize(variables_override = nil)
|
|
6
|
+
@variables = variables_override || get_system_environment_variables
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def empty?
|
|
10
|
+
return @variables.empty?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def keys
|
|
14
|
+
return @variables.keys
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def with_environment
|
|
18
|
+
original_environment = {}
|
|
19
|
+
original_environment.merge!(ENV.to_hash)
|
|
20
|
+
|
|
21
|
+
begin
|
|
22
|
+
set_system_environment_variables(@variables)
|
|
23
|
+
yield
|
|
24
|
+
ensure
|
|
25
|
+
ENV.clear
|
|
26
|
+
set_system_environment_variables(original_environment)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
return
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def get_system_environment_variables
|
|
35
|
+
vars = {}
|
|
36
|
+
ENV.each { |key,value| vars[key]=value }
|
|
37
|
+
|
|
38
|
+
return vars
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def set_system_environment_variables(variables)
|
|
42
|
+
variables.each { |key, value| ENV[key] = value }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'fig/environmentvariables'
|
|
2
|
+
|
|
3
|
+
module Fig; end;
|
|
4
|
+
module EnvironmentVariables; end
|
|
5
|
+
|
|
6
|
+
# Manager of a set of environment variables where the variable names are
|
|
7
|
+
# case-insensitive, e.g. on MS Windows.
|
|
8
|
+
class Fig::EnvironmentVariables::CaseInsensitive
|
|
9
|
+
include Fig::EnvironmentVariables
|
|
10
|
+
|
|
11
|
+
def [](key)
|
|
12
|
+
return @variables[key_to_store_under(key)]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def []=(key, new_value)
|
|
16
|
+
@variables[key_to_store_under(key)] = new_value
|
|
17
|
+
|
|
18
|
+
return
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def prepend_variable(key, new_value)
|
|
22
|
+
existing_key = key_to_store_under(key)
|
|
23
|
+
|
|
24
|
+
if existing_key
|
|
25
|
+
assign_value_to_existing_key(existing_key, new_value)
|
|
26
|
+
else
|
|
27
|
+
@variables[key] = new_value
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
return
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def assign_value_to_existing_key(existing_key, new_value)
|
|
36
|
+
current_value = @variables[existing_key]
|
|
37
|
+
if current_value
|
|
38
|
+
@variables[existing_key] = new_value + File::PATH_SEPARATOR + current_value
|
|
39
|
+
else
|
|
40
|
+
@variables[existing_key] = new_value
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
return
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def key_to_store_under(key)
|
|
47
|
+
return @variables.keys.detect(lambda {key}) {|stored| stored.downcase == key.downcase}
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'fig/environmentvariables'
|
|
2
|
+
|
|
3
|
+
module Fig; end;
|
|
4
|
+
module EnvironmentVariables; end
|
|
5
|
+
|
|
6
|
+
# Manager of a set of environment variables where the variable names are
|
|
7
|
+
# case-insensitive, e.g. on *nix.
|
|
8
|
+
class Fig::EnvironmentVariables::CaseSensitive
|
|
9
|
+
include Fig::EnvironmentVariables
|
|
10
|
+
|
|
11
|
+
def [](key)
|
|
12
|
+
return @variables[key]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def []=(new_key, new_value)
|
|
16
|
+
@variables[new_key] = new_value
|
|
17
|
+
|
|
18
|
+
return
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def prepend_variable(key, new_value)
|
|
22
|
+
if @variables.key?(key)
|
|
23
|
+
@variables[key] = new_value + File::PATH_SEPARATOR + @variables[key]
|
|
24
|
+
else
|
|
25
|
+
@variables[key] = new_value
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
return
|
|
29
|
+
end
|
|
30
|
+
end
|
data/lib/fig/grammar.treetop
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'fig/package'
|
|
2
2
|
require 'fig/packagedescriptor'
|
|
3
|
+
require 'fig/parser'
|
|
3
4
|
require 'fig/statement/archive'
|
|
4
5
|
require 'fig/statement/command'
|
|
5
6
|
require 'fig/statement/configuration'
|
|
@@ -15,15 +16,15 @@ module Fig
|
|
|
15
16
|
|
|
16
17
|
grammar Fig
|
|
17
18
|
rule package
|
|
18
|
-
|
|
19
|
-
def to_package(
|
|
19
|
+
optional_ws statements:(package_statement*) optional_ws {
|
|
20
|
+
def to_package(descriptor, directory)
|
|
20
21
|
Package.new(
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
descriptor.name,
|
|
23
|
+
descriptor.version,
|
|
23
24
|
directory,
|
|
24
25
|
statements.elements.map do
|
|
25
26
|
|statement|
|
|
26
|
-
statement.to_package_statement(
|
|
27
|
+
statement.to_package_statement(descriptor)
|
|
27
28
|
end
|
|
28
29
|
)
|
|
29
30
|
end
|
|
@@ -35,25 +36,33 @@ grammar Fig
|
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
rule archive
|
|
38
|
-
"archive" ws url {
|
|
39
|
-
def to_package_statement(
|
|
40
|
-
Statement::Archive.new(
|
|
39
|
+
statement_start:"archive" ws url {
|
|
40
|
+
def to_package_statement(descriptor)
|
|
41
|
+
Statement::Archive.new(
|
|
42
|
+
Parser.node_location(statement_start), url.value.text_value
|
|
43
|
+
)
|
|
41
44
|
end
|
|
42
45
|
}
|
|
43
46
|
end
|
|
44
47
|
|
|
45
48
|
rule resource
|
|
46
|
-
"resource" ws url {
|
|
47
|
-
def to_package_statement(
|
|
48
|
-
Statement::Resource.new(
|
|
49
|
+
statement_start:"resource" ws url {
|
|
50
|
+
def to_package_statement(descriptor)
|
|
51
|
+
Statement::Resource.new(
|
|
52
|
+
Parser.node_location(statement_start), url.value.text_value
|
|
53
|
+
)
|
|
49
54
|
end
|
|
50
55
|
}
|
|
51
56
|
end
|
|
52
57
|
|
|
53
58
|
rule retrieve
|
|
54
|
-
"retrieve" ws var:retrieve_variable "->" path:retrieve_path ws {
|
|
55
|
-
def to_package_statement(
|
|
56
|
-
Statement::Retrieve.new(
|
|
59
|
+
statement_start:"retrieve" ws var:retrieve_variable "->" path:retrieve_path ws {
|
|
60
|
+
def to_package_statement(descriptor)
|
|
61
|
+
Statement::Retrieve.new(
|
|
62
|
+
Parser.node_location(statement_start),
|
|
63
|
+
var.text_value,
|
|
64
|
+
path.text_value
|
|
65
|
+
)
|
|
57
66
|
end
|
|
58
67
|
}
|
|
59
68
|
end
|
|
@@ -67,13 +76,14 @@ grammar Fig
|
|
|
67
76
|
end
|
|
68
77
|
|
|
69
78
|
rule config
|
|
70
|
-
"config" ws config_name ws statements:config_statement* "end" ws {
|
|
71
|
-
def to_package_statement(
|
|
79
|
+
statement_start:"config" ws config_name ws statements:config_statement* "end" ws {
|
|
80
|
+
def to_package_statement(descriptor)
|
|
72
81
|
Statement::Configuration.new(
|
|
82
|
+
Parser.node_location(statement_start),
|
|
73
83
|
config_name.text_value,
|
|
74
84
|
statements.elements.map do
|
|
75
85
|
|statement|
|
|
76
|
-
statement.to_config_statement(
|
|
86
|
+
statement.to_config_statement(descriptor)
|
|
77
87
|
end
|
|
78
88
|
)
|
|
79
89
|
end
|
|
@@ -85,29 +95,38 @@ grammar Fig
|
|
|
85
95
|
end
|
|
86
96
|
|
|
87
97
|
rule include
|
|
88
|
-
"include" ws descriptor overrides:(override*) {
|
|
89
|
-
def to_config_statement(
|
|
98
|
+
statement_start:"include" ws descriptor overrides:(override*) {
|
|
99
|
+
def to_config_statement(containing_package_descriptor)
|
|
90
100
|
Statement::Include.new(
|
|
101
|
+
Parser.node_location(statement_start),
|
|
91
102
|
PackageDescriptor.parse(descriptor.text_value.strip),
|
|
92
103
|
overrides.elements.map{ |e| e.to_override },
|
|
93
|
-
|
|
104
|
+
containing_package_descriptor
|
|
94
105
|
)
|
|
95
106
|
end
|
|
96
107
|
}
|
|
97
108
|
end
|
|
98
109
|
|
|
99
110
|
rule override
|
|
100
|
-
"override" ws package_name "/" version_name ws {
|
|
111
|
+
statement_start:"override" ws package_name "/" version_name ws {
|
|
101
112
|
def to_override
|
|
102
|
-
return Statement::Override.new(
|
|
113
|
+
return Statement::Override.new(
|
|
114
|
+
Parser.node_location(statement_start),
|
|
115
|
+
package_name.text_value,
|
|
116
|
+
version_name.text_value
|
|
117
|
+
)
|
|
103
118
|
end
|
|
104
119
|
}
|
|
105
120
|
end
|
|
106
121
|
|
|
107
122
|
rule path
|
|
108
|
-
("append" / "path" / "add") ws name:path_name "=" value:path_value ws {
|
|
109
|
-
def to_config_statement(
|
|
110
|
-
Statement::Path.new(
|
|
123
|
+
statement_start:("append" / "path" / "add") ws name:path_name "=" value:path_value ws {
|
|
124
|
+
def to_config_statement(descriptor)
|
|
125
|
+
Statement::Path.new(
|
|
126
|
+
Parser.node_location(statement_start),
|
|
127
|
+
name.text_value,
|
|
128
|
+
value.text_value
|
|
129
|
+
)
|
|
111
130
|
end
|
|
112
131
|
}
|
|
113
132
|
end
|
|
@@ -121,9 +140,13 @@ grammar Fig
|
|
|
121
140
|
end
|
|
122
141
|
|
|
123
142
|
rule set
|
|
124
|
-
"set" ws name:set_name "=" value:set_value ws {
|
|
125
|
-
def to_config_statement(
|
|
126
|
-
Statement::Set.new(
|
|
143
|
+
statement_start:"set" ws name:set_name "=" value:set_value ws {
|
|
144
|
+
def to_config_statement(descriptor)
|
|
145
|
+
Statement::Set.new(
|
|
146
|
+
Parser.node_location(statement_start),
|
|
147
|
+
name.text_value,
|
|
148
|
+
value.text_value
|
|
149
|
+
)
|
|
127
150
|
end
|
|
128
151
|
}
|
|
129
152
|
end
|
|
@@ -137,9 +160,11 @@ grammar Fig
|
|
|
137
160
|
end
|
|
138
161
|
|
|
139
162
|
rule command
|
|
140
|
-
"command" ws string {
|
|
141
|
-
def to_config_statement(
|
|
142
|
-
Statement::Command.new(
|
|
163
|
+
statement_start:"command" ws string {
|
|
164
|
+
def to_config_statement(descriptor)
|
|
165
|
+
Statement::Command.new(
|
|
166
|
+
Parser.node_location(statement_start), string.value.text_value
|
|
167
|
+
)
|
|
143
168
|
end
|
|
144
169
|
}
|
|
145
170
|
end
|
|
@@ -183,10 +208,6 @@ grammar Fig
|
|
|
183
208
|
[a-zA-Z0-9_.-]+
|
|
184
209
|
end
|
|
185
210
|
|
|
186
|
-
rule name
|
|
187
|
-
value:[a-zA-Z0-9]+ ws
|
|
188
|
-
end
|
|
189
|
-
|
|
190
211
|
rule url
|
|
191
212
|
(value:[a-zA-Z0-9:/\\._*-]+ ws) / ('"' value:[a-zA-Z0-9:/\\._-]+ '"' ws)
|
|
192
213
|
end
|
|
@@ -194,6 +215,10 @@ grammar Fig
|
|
|
194
215
|
rule ws
|
|
195
216
|
[ \n\r\t]+
|
|
196
217
|
end
|
|
218
|
+
|
|
219
|
+
rule optional_ws
|
|
220
|
+
[ \n\r\t]*
|
|
221
|
+
end
|
|
197
222
|
end
|
|
198
223
|
|
|
199
224
|
end
|