Showing builds [% (page - 1) * resultsPerPage + 1 %] - [% (page - 1) * resultsPerPage + builds.size %] out of [% total %] in order of descending finish time.
+Showing builds [% (page - 1) * resultsPerPage + 1 %] - [% (page - 1) * resultsPerPage + builds.size %] out of [% HTML.escape(total) %] in order of descending finish time.
[% INCLUDE renderBuildList hideProjectName=project hideJobsetName=jobset hideJobName=job %] [% INCLUDE renderPager %] diff --git a/src/root/build.tt b/src/root/build.tt index 18ff6f01..8c52b489 100644 --- a/src/root/build.tt +++ b/src/root/build.tt @@ -37,7 +37,7 @@ END; seen.${step.drvpath} = 1; log = c.uri_for('/build' build.id 'nixlog' step.stepnr); %]Build ID: | -[% build.id %] | +[% HTML.escape(build.id) %] | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Status: | @@ -168,9 +168,9 @@ END; END; %]; [%+ IF nrFinished == nrConstituents && nrFailedConstituents == 0 %] - all [% nrConstituents %] constituent builds succeeded + all [% HTML.escape(nrConstituents) %] constituent builds succeeded [% ELSE %] - [% nrFailedConstituents %] out of [% nrConstituents %] constituent builds failed + [% HTML.escape(nrFailedConstituents) %] out of [% HTML.escape(nrConstituents) %] constituent builds failed [% IF nrFinished < nrConstituents %] ([% nrConstituents - nrFinished %] still pending) [% END %] @@ -180,25 +180,25 @@ END;|||||||||||||||||
System: | -[% build.system %] | +[% build.system | html %] | |||||||||||||||
Release name: | -[% HTML.escape(build.releasename) %] | +[% build.releasename | html %] | |||||||||||||||
Nix name: | -[% build.nixname %] | +[% build.nixname | html %] | |||||||||||||||
Part of: | - evaluation [% eval.id %] - [% IF nrEvals > 1 +%] (and [% nrEvals - 1 %] others)[% END %] + c.uri_for(c.controller('JobsetEval').action_for('view'), [eval.id])) %]>evaluation [% HTML.escape(eval.id) %] + [% IF nrEvals > 1 +%] (and c.uri_for('/build' build.id 'evals')) %]>[% nrEvals - 1 %] others)[% END %] | Logfile: | [% actualLog = cachedBuildStep ? c.uri_for('/build' cachedBuild.id 'nixlog' cachedBuildStep.stepnr) : c.uri_for('/build' build.id 'log') %] - pretty - raw - tail + actualLog) %]>pretty + actualLog _ "/raw") %]>raw + actualLog _ "/tail") %]>tail | [% END %] @@ -336,12 +336,12 @@ END; [% IF eval.nixexprinput %]||||||||||||||
Nix expression: | -file [% HTML.escape(eval.nixexprpath) %] in input [% HTML.escape(eval.nixexprinput) %] | +file [% eval.nixexprpath | html %] in input [% eval.nixexprinput | html %] | |||||||||||||||
Nix name: | -[% build.nixname %] | +[% build.nixname | html %] | |||||||||||||||
Short description: | @@ -361,11 +361,11 @@ END;|||||||||||||||||
System: | -[% build.system %] | +[% build.system | html %] | |||||||||||||||
Derivation store path: | -[% build.drvpath %] | +[% build.drvpath | html %] | |||||||||||||||
Output store paths: | @@ -376,14 +376,14 @@ END;|||||||||||||||||
Closure size: | [% mibs(build.closuresize / (1024 * 1024)) %] MiB - (history) | + ( chartsURL) %]>history)||||||||||||||||
Output size: | [% mibs(build.size / (1024 * 1024)) %] MiB - (history) | + ( chartsURL) %]>history)||||||||||||||||
c.uri_for('/job' project.name jobset.name job 'metric' metric.name)) %]">[%HTML.escape(metric.name)%] | -[%metric.value%] | -[%metric.unit%] | +c.uri_for('/job' project.name jobset.name job 'metric' metric.name)) %]">[% metric.name | html %] | +[% HTML.escape(metric.value) %] | +[% HTML.escape(metric.unit) %] | ||||||||||||
[% INCLUDE renderFullBuildLink build=input.build %] | -[% input.name %] | -[% input.build.system %] | +[% input.name | html %] | +[% input.build.system | html %] | [% INCLUDE renderDateTime timestamp = input.build.timestamp %] | ||||||||||||
[% b.id %] | -[% b.get_column('releasename') || b.nixname %] | -[% b.system %] | +c.uri_for('/build' b.id)) %]>[% HTML.escape(b.id) %] | +[% b.get_column('releasename') || b.nixname | html %] | +[% b.system | html %] | [% IF b.homepage %] b.homepage) %]>[% HTML.escape(b.description) %] diff --git a/src/root/common.tt b/src/root/common.tt index 86335a74..b18d33f7 100644 --- a/src/root/common.tt +++ b/src/root/common.tt @@ -55,17 +55,17 @@ BLOCK renderRelativeDate %] [% END; BLOCK renderProjectName %] -[% project %] + c.uri_for('/project' project)) %]>[% project | html %] [% END; BLOCK renderJobsetName %] -[% jobset %] + c.uri_for('/jobset' project jobset)) %]>[% jobset | html %] [% END; BLOCK renderJobName %] -[% job %] + c.uri_for('/job' project jobset job)) %]>[% job | html %] [% END; @@ -98,7 +98,7 @@ BLOCK renderDrvInfo; .substr(0, -4); # strip `.drv` IF drvname != releasename; IF step.type == 0; action = "Build"; ELSE; action = "Substitution"; END; - IF drvname; %] ([% action %] of [% drvname %])[% END; + IF drvname; %] ([% HTML.escape(action) %] of [% HTML.escape(drvname) %])[% END; END; END; @@ -140,25 +140,25 @@ BLOCK renderBuildListBody; [% IF showSchedulingInfo %] | [% IF busy %]Started[% ELSE %]Queued[% END %] | [% END %] -[% build.id %] | +link) %]>[% HTML.escape(build.id) %] | [% IF !hideJobName %]- [% IF !hideJobsetName %][%build.jobset.get_column("project")%]:[%build.jobset.get_column("name")%]:[% END %][%build.get_column("job")%] + link) %]>[% IF !hideJobsetName %][% HTML.escape(build.jobset.get_column("project")) %]:[% HTML.escape(build.jobset.get_column("name")) %]:[% END %][% HTML.escape(build.get_column("job")) %] [% IF showStepName %] [% INCLUDE renderDrvInfo step=build.buildsteps releasename=build.nixname %] [% END %] | [% END %][% t = showSchedulingInfo ? build.timestamp : build.stoptime; IF t; INCLUDE renderRelativeDate timestamp=(showSchedulingInfo ? build.timestamp : build.stoptime); ELSE; "-"; END %] | -[% !showSchedulingInfo and build.get_column('releasename') ? build.get_column('releasename') : build.nixname %] | -[% build.system %] | +[% !showSchedulingInfo and build.get_column('releasename') ? HTML.escape(build.get_column('releasename')) : HTML.escape(build.nixname) %] | +[% build.system | html %] | [% IF showDescription %] -[% build.description %] | +[% HTML.escape(build.description) %] | [% END %]
More... | |||||||||||||||||
linkToAll) %]>More... | |||||||||||||||||
[% input.name %] | -[% type = input.type; inputTypes.$type %] | +[% input.name | html %] | +[% type = input.type; HTML.escape(inputTypes.$type) %] | [% IF input.type == "build" || input.type == "sysbuild" %] [% INCLUDE renderFullBuildLink build=input.dependency %] @@ -383,7 +383,7 @@ BLOCK renderInputs; %] [% END %] | [% IF input.revision %][% HTML.escape(input.revision) %][% END %] | -[% input.path %] | +[% input.path | html %] | ||||||||||
[% bi1.name %] | [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %] | ||||||||||||||||
[% HTML.escape(bi1.name) %] | [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %] | ||||||||||||||||
- [% bi1.name %] | [% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 12) _ ' to ' _ bi2.revision.substr(0, 12)) %] + [% HTML.escape(bi1.name) %] | [% INCLUDE renderDiffUri contents=(bi1.revision.substr(0, 12) _ ' to ' _ bi2.revision.substr(0, 12)) %] | |||||||||||||||
- [% bi1.name %] | [% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %] + [% HTML.escape(bi1.name) %] | [% INCLUDE renderDiffUri contents=(bi1.revision _ ' to ' _ bi2.revision) %] | |||||||||||||||
- [% bi1.name %] | [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %] + [% HTML.escape(bi1.name) %] | [% INCLUDE renderShortInputValue input=bi1 %] to [% INCLUDE renderShortInputValue input=bi2 %]
[% INCLUDE renderInputDiff inputs1=bi1.dependency.inputs inputs2=bi2.dependency.inputs nestedDiff=1 nestLevel=nestLevel+1 %] | |||||||||||||||
[% bi1.name %] | Changed input type from '[% type = bi1.type; inputTypes.$type %]' to '[% type = bi2.type; inputTypes.$type %]' | ||||||||||||||||
[% HTML.escape(bi1.name) %] | Changed input type from '[% type = bi1.type; HTML.escape(inputTypes.$type) %]' to '[% type = bi2.type; HTML.escape(inputTypes.$type) %]' | ||||||||||||||||
[% bi1.name %] | Input not present in this build. | ||||||||||||||||
[% HTML.escape(bi1.name) %] | Input not present in this build. | ||||||||||||||||
[% eval.id %] | +link) %]>[% HTML.escape(eval.id) %] | [% IF !jobset && !build %][% INCLUDE renderFullJobsetName project=eval.jobset.project.name jobset=eval.jobset.name %] | [% END %] @@ -507,7 +507,7 @@ BLOCK renderEvals %] [% IF e.changedInputs.size > 0; sep=''; FOREACH input IN e.changedInputs; - sep; %] [% input.name %] → [% INCLUDE renderShortEvalInput input=input; + sep; %] [% HTML.escape(input.name) %] → [% INCLUDE renderShortEvalInput input=input; sep=', '; END; ELSE %] @@ -518,29 +518,29 @@ BLOCK renderEvals %] [% END %]- [% e.nrSucceeded %] + [% HTML.escape(e.nrSucceeded) %] | [% IF e.nrFailed > 0 %] - [% e.nrFailed %] + [% HTML.escape(e.nrFailed) %] [% END %] | [% IF e.nrScheduled > 0 %] - [% e.nrScheduled %] + [% HTML.escape(e.nrScheduled) %] [% END %] | [% IF e.diff > 0 %] - +[% e.diff %] + +[% HTML.escape(e.diff) %] [% ELSIF e.diff < 0 && e.nrScheduled == 0 %] - [% e.diff %] + [% HTML.escape(e.diff) %] [% END %] | |||||||||||
More... | |||||||||||||||||
linkToAll) %]>More... |
Below are the most recent builds of the [% builds.size %] jobs of which you +
Below are the most recent builds of the [% HTML.escape(builds.size) %] jobs of which you ([% HTML.escape(user.emailaddress) %]) are a maintainer.
[% INCLUDE renderBuildList %] diff --git a/src/root/dashboard.tt b/src/root/dashboard.tt index 06b8de15..0daf3dad 100644 --- a/src/root/dashboard.tt +++ b/src/root/dashboard.tt @@ -24,7 +24,7 @@$ gunzip < [% filename %] | nix-store --import
$ gunzip < [% HTML.escape(filename) %] | nix-store --import
or to download and unpack in one command:
-$ curl [% uri %] | gunzip | nix-store --import
$ curl [% HTML.escape(uri) %] | gunzip | nix-store --import
The package can then be found in the path [% - product.path %]. You’ll probably also want to do
+ product.path | html %]. You’ll probably also want to do -$ nix-env -i [% product.path %]
$ nix-env -i [% HTML.escape(product.path) %]
to actually install the package in your Nix user environment.
@@ -174,16 +174,16 @@File size: | [% product.filesize %] bytes ([% mibs(product.filesize / (1024 * 1024)) %] MiB) |
---|---|
SHA-256 hash: | [% product.sha256hash %] |
Full path: | [% product.path %] |
SHA-256 hash: | [% product.sha256hash | html %] |
Full path: | [% product.path | html %] |
The following builds match your query:[% IF builds.size > limit %] (first [% limit %] results only)[% END %]
+The following builds match your query:[% IF builds.size > limit %] (first [% HTML.escape(limit) %] results only)[% END %]
[% INCLUDE renderBuildList %] @@ -58,7 +58,7 @@ [% IF jobs.size > 0; matched = 1 %] -The following jobs match your query:[% IF jobs.size > limit %] (first [% limit %] results only)[% END %]
+The following jobs match your query:[% IF jobs.size > limit %] (first [% HTML.escape(limit) %] results only)[% END %]
[% INCLUDE renderBuildStatusIcon buildstatus=step.status size=16 %] | [% step.drvpath.match('-(.*).drv').0 %] | [% INCLUDE renderFullJobNameOfBuild build=step.build %] | -[% step.build.id %] | -[% step.stepnr %] | +c.uri_for('/build' step.build.id)) %]>[% HTML.escape(step.build.id) %] | +c.uri_for('/build' step.build.id 'nixlog' step.stepnr 'tail')) %]>[% HTML.escape(step.stepnr) %] | [% INCLUDE renderRelativeDate timestamp=step.stoptime %] | [% INCLUDE renderDuration duration = step.stoptime - step.starttime %] | [% INCLUDE renderMachineName machine=step.machine %] | diff --git a/src/root/style.tt b/src/root/style.tt index 4094b7bc..fa977afe 100644 --- a/src/root/style.tt +++ b/src/root/style.tt @@ -4,14 +4,14 @@ - + c.uri_for("/static/fontawesome/css/all.css")) %] rel="stylesheet" /> - + c.uri_for("/static/bootstrap/css/bootstrap.min.css")) %] rel="stylesheet" /> - - + c.uri_for("/static/css/hydra.css")) %] type="text/css" /> + c.uri_for("/static/css/rotated-th.css")) %] type="text/css" />