4 # Copyright (c) 2017 Vojtech Horky
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
11 # - Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # - Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # - The name of the author may not be used to endorse or promote products
17 # derived from this software without specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 from hbuild
.scheduler
import Task
34 class MakeHtmlReportTask(Task
):
35 def __init__(self
, root_path
, rss_url
, resource_path
):
36 Task
.__init
__(self
, 'html-report')
37 self
.root
= os
.path
.abspath(root_path
)
38 self
.rss_url
= rss_url
39 self
.static_resources_relative_path
= resource_path
41 def copy_file_to_downloadable(self
, source_filename
, dest_filename
):
42 with
open(os
.path
.join(self
.root
, source_filename
)) as input:
43 content
= input.read()
44 with self
.ctl
.open_downloadable_file(dest_filename
, 'w') as output
:
48 copy_static_resources
= False
50 if self
.static_resources_relative_path
is None:
51 self
.static_resources_relative_path
= './'
52 copy_static_resources
= True
57 'CONFIG_RESOURCE_DIR',
58 self
.static_resources_relative_path
,
61 if not self
.rss_url
is None:
62 command
.append('--stringparam')
63 command
.append('CONFIG_RSS_PATH')
64 command
.append(self
.rss_url
)
66 command
.append(os
.path
.join(self
.root
, 'hbuild/web/report.xsl'))
67 command
.append(self
.ctl
.get_artefact_absolute_path('report.xml'))
69 res
= self
.ctl
.run_command(command
, needs_output
=True)
73 with self
.ctl
.open_downloadable_file('index.html', 'w') as index_html
:
74 index_html
.write(res
['stdout'])
76 if copy_static_resources
:
77 for filename
in [ 'main.css', 'jquery-2.1.4.min.js' ]:
78 src
= os
.path
.join('hbuild/web/', filename
)
79 self
.copy_file_to_downloadable(src
, filename
)