-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaction.yml
78 lines (72 loc) · 2.23 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
name: 'Create PR comments'
description: 'Split file on chunks and create PR comments'
inputs:
filename:
description: 'path to file'
required: true
content:
description: 'content of file'
required: false
title:
description: ''
required: false
default: 'Output'
chunk_size:
description: 'Chunk size (chars number)'
required: false
default: '32000'
summary:
description: 'Expandable block summary'
required: false
github_token:
description: 'GitHub token to authenticate'
required: true
runs:
using: "composite"
steps:
- name: Dump
if: ${{ inputs.content }}
env:
content: ${{inputs.content}}
shell: bash
run: echo "$content" > ${{inputs.filename}}
- name: Create PR
uses: actions/[email protected]
env:
title: ${{inputs.title}}
summary: ${{inputs.summary}}
filename: ${{inputs.filename}}
with:
github-token: ${{inputs.github_token}}
script: |
const {readFileSync} = require('fs')
const title = process.env.title
const block_summary = process.env.summary
const str = readFileSync(process.env.filename, 'utf-8');
const len = ${{inputs.chunk_size}}
const size = Math.ceil(str.length/len)
const chunks = Array(size)
let offset = 0
for (let i = 0; i < size; i++) {
chunks[i] = str.substr(offset, len)
offset += len
}
for (var i = 0; i < chunks.length; i++) {
block_title = ''
if (i==0) {
block_title = `${title} (1 from ${chunks.length}):`
} else {
block_title = `Continue output (${i + 1} from ${chunks.length}):`
}
comment = block_title + '\n' +
'<details>\n' +
'<summary>' + block_summary + '</summary>\n\n' +
'```\n' + chunks[i] + '\n```\n\n' +
'</details>'
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
})
}