Skip to content

Normative: Introduce ArrayBuffer.prototype.sliceToImmutable #19

Normative: Introduce ArrayBuffer.prototype.sliceToImmutable

Normative: Introduce ArrayBuffer.prototype.sliceToImmutable #19

Workflow file for this run

name: Publish PR
run-name: ${{ github.event.workflow_run.display_title }}
on:
workflow_run:
workflows: ['Render PR']
types: [completed]
jobs:
publish:
runs-on: ubuntu-latest
if: >
${{
!github.event.repository.fork &&
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
}}
steps:
- uses: actions/checkout@v4
- name: '[node LTS] npm install'
uses: ljharb/actions/node/install@main
with:
node-version: lts/*
- name: Print event info
uses: actions/github-script@v7
with:
script: 'console.log(${{ toJson(github.event) }});'
- name: Download zipball
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const run_id = ${{ github.event.workflow_run.id }};
const listArtifactsQuery = { owner, repo, run_id, name: 'result' };
const listArtifactsResponse =
await github.rest.actions.listWorkflowRunArtifacts(listArtifactsQuery);
const { total_count, artifacts } = listArtifactsResponse.data;
if (total_count !== 1) {
const summary = artifacts?.map(artifact => {
const { name, size_in_bytes, url } = artifact;
return { name, size_in_bytes, url };
});
const repr = value => JSON.stringify(value);
throw Error(`Expected 1 artifact, got ${total_count} ${repr(summary ?? [])}`);
}
const artifact_id = artifacts[0].id;
console.log(`downloading artifact ${artifact_id}`);
const downloadResponse = await github.rest.actions.downloadArtifact({
owner,
repo,
artifact_id,
archive_format: 'zip',
});
const fs = require('fs');
fs.writeFileSync('${{ github.workspace }}/result.zip', Buffer.from(downloadResponse.data));
- name: Provide result directory
run: rm -rf result && mkdir -p result
- run: unzip -o result.zip -d result
- run: ls result
- name: Extract PR number
id: extract-pr-number
run: |
cd result
awk -v ok=1 \
'{ print; if(!match($0, /^[1-9][0-9]*$/)) ok=0; } END { exit !(NR==1 && ok); }' \
pr-number.txt
echo "number=$(cat pr-number.txt)" >> $GITHUB_OUTPUT
rm pr-number.txt
- name: Insert preview warning
env:
PR: ${{ steps.extract-pr-number.outputs.number }}
run: |
tmp="$(mktemp -u XXXXXXXX.json)"
repo_url="https://github.com/$GITHUB_REPOSITORY"
commit="$(git rev-parse --verify HEAD)"
jq -n --arg repo_url "$repo_url" --arg PR "$PR" --arg commit "$commit" '
def repo_link($args): $args as [$path, $contents]
| ($repo_url + ($path // "")) as $url
| "<a href=\"\($url | @html)\">\($contents // $url)</a>";
{
SUMMARY: "PR #\($PR)",
REPO_LINK: repo_link([]),
PR_LINK: repo_link(["/pull/" + $PR, "PR #\($PR)"]),
COMMIT_LINK: ("commit " + repo_link(["/commit/" + $commit, "<code>\($commit)</code>"])),
}
' > "$tmp"
find result -name '*.html' -exec \
node scripts/insert_warning.mjs --strict scripts/pr_preview_warning.html "$tmp" '{}' '+'
- name: Publish to gh-pages
uses: JamesIves/[email protected]
with:
branch: gh-pages
folder: result
target-folder: pr/${{ steps.extract-pr-number.outputs.number }}
- name: Determine gh-pages url
id: get-pages-url
run: |
gh_pages_url="https://$(printf '%s' "$GITHUB_REPOSITORY" \
| sed 's#/#.github.io/#; s#^tc39.github.io/#tc39.es/#')"
echo "url=$gh_pages_url" >> $GITHUB_OUTPUT
- name: Provide PR comment
uses: phulsechinmay/[email protected]
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_ID: ${{ steps.extract-pr-number.outputs.number }}
message: >
The rendered spec for this PR is available at
${{ steps.get-pages-url.outputs.url }}/pr/${{ steps.extract-pr-number.outputs.number }}.