Skip to content

Commit 559dfdb

Browse files
authored
ci: add pr langauge labeler (#335)
* ci: add pr langauge labeler * rename job * apply reviews (Integrate into integration workflow) * Rename job
1 parent 4eda421 commit 559dfdb

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

โ€Ž.github/workflows/integration.yaml

+74
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,77 @@ jobs:
99
steps:
1010
- uses: actions/checkout@v4
1111
- uses: fernandrone/[email protected]
12+
13+
label-lang:
14+
runs-on: ubuntu-latest
15+
continue-on-error: true
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
20+
- name: Set up Node.js
21+
uses: actions/setup-node@v4
22+
with:
23+
node-version: '20'
24+
25+
- name: Create package.json
26+
run: echo '{}' > package.json
27+
28+
- name: Install dependencies
29+
run: npm install @octokit/rest node-fetch
30+
31+
- name: Detect languages and add labels
32+
env:
33+
GITHUB_TOKEN: ${{ github.token }}
34+
PR_NUM: ${{ github.event.number }}
35+
run: |
36+
node --input-type=module -e "
37+
import { Octokit } from '@octokit/rest';
38+
import path from 'path';
39+
import fetch from 'node-fetch';
40+
41+
const octokit = new Octokit({
42+
auth: process.env.GITHUB_TOKEN,
43+
request: { fetch }
44+
});
45+
46+
const extensionsToLanguages = {
47+
js: 'js',
48+
ts: 'ts',
49+
py: 'py',
50+
java: 'java',
51+
kt: 'kotlin',
52+
cpp: 'c++',
53+
go: 'go',
54+
exs: 'elixir',
55+
swift: 'swift'
56+
// ํ•„์š”ํ•œ ๋‹ค๋ฅธ ํ™•์žฅ์ž์™€ ์–ธ์–ด ๋งคํ•‘ ์ถ”๊ฐ€
57+
};
58+
59+
async function run() {
60+
const { data: files } = await octokit.pulls.listFiles({
61+
owner: process.env.GITHUB_REPOSITORY.split('/')[0],
62+
repo: process.env.GITHUB_REPOSITORY.split('/')[1],
63+
pull_number: process.env.PR_NUM,
64+
});
65+
66+
const languages = new Set();
67+
files.forEach(file => {
68+
const ext = path.extname(file.filename).slice(1);
69+
if (extensionsToLanguages[ext]) {
70+
languages.add(extensionsToLanguages[ext]);
71+
}
72+
});
73+
74+
if (languages.size > 0) {
75+
await octokit.issues.addLabels({
76+
owner: process.env.GITHUB_REPOSITORY.split('/')[0],
77+
repo: process.env.GITHUB_REPOSITORY.split('/')[1],
78+
issue_number: process.env.PR_NUM,
79+
labels: Array.from(languages),
80+
});
81+
}
82+
}
83+
84+
run().catch(err => console.error(err));
85+
"

0 commit comments

Comments
ย (0)