autoproj 2.6.0 → 2.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/autoproj/package_manifest.rb +37 -13
- data/lib/autoproj/reporter.rb +22 -1
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68e9f51443df2835dca1ca6018c66c1ddddc191c
|
4
|
+
data.tar.gz: 90ddec45d88fad399a89f27b5125e64ce776a692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8262c141ccda64777df11c91a3536bfe23feb48f9189fd16d04b7a891a1227ceb7c6a54bb5e5067ae7efce930a6cd965b47fcf38f951eb23c4ddc9c81bda0c20
|
7
|
+
data.tar.gz: 5ee4a343b0fafda6f82be49c87a87d60e8242521b0a532d726bf896f4b384bee2c8b6e5b9abb1ba2a5062981ba0883de04397431d3edd6da31ee918598c72399
|
@@ -139,14 +139,36 @@ def each_author
|
|
139
139
|
|
140
140
|
# @api private
|
141
141
|
#
|
142
|
-
# REXML stream parser object used to
|
143
|
-
|
144
|
-
class Loader
|
142
|
+
# REXML stream parser object used to filter nested tags
|
143
|
+
class BaseLoader
|
145
144
|
include REXML::StreamListener
|
146
145
|
|
146
|
+
def initialize
|
147
|
+
@tag_level = 0
|
148
|
+
end
|
149
|
+
|
150
|
+
def tag_start(name, attributes)
|
151
|
+
toplevel_tag_start(name, attributes) if (@tag_level += 1) == 2
|
152
|
+
end
|
153
|
+
|
154
|
+
def tag_end(name)
|
155
|
+
toplevel_tag_end(name) if (@tag_level -= 1) == 1
|
156
|
+
end
|
157
|
+
|
158
|
+
def text(text)
|
159
|
+
@tag_text << text if @tag_text
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
# @api private
|
164
|
+
#
|
165
|
+
# REXML stream parser object used to load the XML contents into a
|
166
|
+
# {PackageManifest} object
|
167
|
+
class Loader < BaseLoader
|
147
168
|
attr_reader :path, :manifest
|
148
169
|
|
149
170
|
def initialize(path, manifest)
|
171
|
+
super()
|
150
172
|
@path = path
|
151
173
|
@manifest = manifest
|
152
174
|
end
|
@@ -178,7 +200,7 @@ def parse_contact_field(text)
|
|
178
200
|
TEXT_FIELDS = Set['url', 'license', 'version', 'description']
|
179
201
|
AUTHOR_FIELDS = Set['author', 'maintainer', 'rock_maintainer']
|
180
202
|
|
181
|
-
def
|
203
|
+
def toplevel_tag_start(name, attributes)
|
182
204
|
if name == 'depend'
|
183
205
|
parse_depend_tag(name, attributes)
|
184
206
|
elsif name == 'depend_optional'
|
@@ -200,12 +222,7 @@ def tag_start(name, attributes)
|
|
200
222
|
@tag_text = nil
|
201
223
|
end
|
202
224
|
end
|
203
|
-
def
|
204
|
-
if @tag_text
|
205
|
-
@tag_text << text
|
206
|
-
end
|
207
|
-
end
|
208
|
-
def tag_end(name)
|
225
|
+
def toplevel_tag_end(name)
|
209
226
|
if AUTHOR_FIELDS.include?(name)
|
210
227
|
manifest.send("#{name}s").concat(parse_contact_field(@tag_text))
|
211
228
|
elsif TEXT_FIELDS.include?(name)
|
@@ -225,11 +242,12 @@ def tag_end(name)
|
|
225
242
|
# REXML stream parser object used to load the XML contents into a
|
226
243
|
# {PackageManifest} object
|
227
244
|
class RosLoader < Loader
|
245
|
+
SUPPORTED_MODES = ['test'].freeze
|
228
246
|
DEPEND_TAGS = Set['depend', 'build_depend', 'build_export_depend',
|
229
247
|
'buildtool_depend', 'buildtool_export_depend',
|
230
248
|
'exec_depend', 'test_depend', 'run_depend']
|
231
249
|
|
232
|
-
def
|
250
|
+
def toplevel_tag_start(name, attributes)
|
233
251
|
if DEPEND_TAGS.include?(name)
|
234
252
|
@tag_text = ''
|
235
253
|
elsif TEXT_FIELDS.include?(name)
|
@@ -242,10 +260,16 @@ def tag_start(name, attributes)
|
|
242
260
|
end
|
243
261
|
end
|
244
262
|
|
245
|
-
def
|
263
|
+
def toplevel_tag_end(name)
|
246
264
|
if DEPEND_TAGS.include?(name)
|
247
265
|
raise InvalidPackageManifest, "found '#{name}' tag in #{path} without content" if @tag_text.strip.empty?
|
248
|
-
|
266
|
+
|
267
|
+
mode = []
|
268
|
+
if name =~ /^(\w+)_depend$/
|
269
|
+
mode = SUPPORTED_MODES & [$1]
|
270
|
+
end
|
271
|
+
|
272
|
+
manifest.add_dependency(@tag_text, modes: mode)
|
249
273
|
elsif AUTHOR_FIELDS.include?(name)
|
250
274
|
author_name = @tag_text.strip
|
251
275
|
email = @author_email ? @author_email.strip : nil
|
data/lib/autoproj/reporter.rb
CHANGED
@@ -49,8 +49,28 @@ def error(error)
|
|
49
49
|
Autoproj.message line, STDERR
|
50
50
|
end
|
51
51
|
end
|
52
|
+
|
53
|
+
def reset_timer
|
54
|
+
@timer_start = Time.now
|
55
|
+
end
|
56
|
+
|
57
|
+
def elapsed_time
|
58
|
+
return unless @timer_start
|
59
|
+
secs = Time.now - @timer_start
|
60
|
+
return if secs < 1
|
61
|
+
|
62
|
+
[[60, 'sec'], [60, 'min'], [24, 'hour'], [1000, 'day']].map do |count, name|
|
63
|
+
if secs > 0
|
64
|
+
secs, n = secs.divmod(count)
|
65
|
+
next if (val = n.to_i) == 0
|
66
|
+
"#{val} #{val > 1 ? name + 's' : name}"
|
67
|
+
end
|
68
|
+
end.compact.reverse.join(' ')
|
69
|
+
end
|
70
|
+
|
52
71
|
def success
|
53
|
-
|
72
|
+
elapsed_string = elapsed_time ? " (took #{elapsed_time})" : ''
|
73
|
+
Autoproj.message("Command finished successfully at #{Time.now}#{elapsed_string}", :bold, :green)
|
54
74
|
if Autobuild.post_success_message
|
55
75
|
Autoproj.message Autobuild.post_success_message
|
56
76
|
end
|
@@ -65,6 +85,7 @@ def self.report(root_dir: nil, silent: nil, debug: Autobuild.debug,
|
|
65
85
|
interrupted = nil
|
66
86
|
package_failures = Autobuild::Reporting.report(on_package_failures: :report_silent) do
|
67
87
|
begin
|
88
|
+
reporter.reset_timer
|
68
89
|
yield
|
69
90
|
rescue Interrupt => e
|
70
91
|
interrupted = e
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autoproj
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Joyeux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|