Skip to content

Commit e4b5547

Browse files
committed
Add render action
1 parent 4ef7afd commit e4b5547

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,13 @@ ssh-key | To retrieve repository (must have write permissions to default branch)
1111
coverage | Directory containing coverage to publish | `cover_db`
1212
author-name | Name to use for commit | actor name
1313
author-email | Email to use for commit | actor email
14+
15+
## render
16+
17+
publish-coverage/render collates branches from a coverage repository for publication by actions/upload-pages-artifact.
18+
19+
### inputs
20+
21+
Name | Description | Default
22+
-|-|-
23+
repository | Repository to list in title | _None_ Must be provided

render/action.yml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Render Coverage
2+
description: Render Coverage in Pages Repository
3+
4+
inputs:
5+
repository:
6+
description: 'Source repository for coverage'
7+
required: true
8+
9+
runs:
10+
using: composite
11+
steps:
12+
- name: Collate coverage
13+
env:
14+
repository: ${{ inputs.repository }}
15+
shell: bash
16+
run: |
17+
: Collate coverage
18+
git checkout --orphan=pages
19+
git checkout main -- index.html
20+
for a in $(
21+
git ls-remote . |
22+
perl -ne '
23+
next unless s,.*/(ref-),$1,;
24+
print;
25+
'
26+
); do
27+
export event=$(echo "$a" | perl -pe 's/ref-(.*?)-.*/$1/')
28+
export ref=$(echo "$a" | perl -pe 's/.*-//')
29+
git checkout origin/$a -- "$event/$ref" || true
30+
echo "$event" >> /tmp/events
31+
done
32+
for event in $(sort -u /tmp/events); do
33+
export event
34+
if ! grep -q "$event" index.html; then
35+
perl -pi -e 's#^(\s+)(</ul>)#$1 <li><a href="$ENV{event}/">$ENV{event}</a></li>\n$1$2#' index.html
36+
fi
37+
(
38+
cd "$event";
39+
find . -mindepth 1 -maxdepth 1 -type d -print0
40+
) | perl -e '
41+
$/="\0";
42+
my $event=$ENV{event};
43+
my $repository=$ENV{repository};
44+
45+
print qq{<html>
46+
<head><title>$repository coverage for $event</title>
47+
<style>
48+
body {
49+
font-family: sans-serif;
50+
}
51+
</style></head>
52+
<body>
53+
<h1>$repository coverage for $event</h1>
54+
<ul>
55+
};
56+
my %list;
57+
for my $ref (<>) {
58+
chomp $ref;
59+
$ref =~ s!.*/!!;
60+
my $date=`git log -1 "origin/ref-$event-$ref" --pretty="%ai"`;
61+
chomp $date;
62+
my $key="$date ($ref)";
63+
my $entry=qq{<a href="$ref/">$key</a>};
64+
$list{$key} = $entry;
65+
}
66+
for my $key (reverse sort keys %list) {
67+
print " <li>$list{$key}</li>\n";
68+
}
69+
print qq{ </ul>
70+
</body>
71+
};
72+
' > $event/index.html
73+
done

0 commit comments

Comments
 (0)