|
9 | 9 | steps:
|
10 | 10 | - uses: actions/checkout@v4
|
11 | 11 | - uses: fernandrone/[email protected]
|
12 |
| - |
13 |
| - label-lang: |
14 |
| - runs-on: ubuntu-latest |
15 |
| - continue-on-error: true |
16 |
| - |
17 |
| - permissions: |
18 |
| - contents: write |
19 |
| - pull-requests: write |
20 |
| - |
21 |
| - steps: |
22 |
| - - name: Checkout code |
23 |
| - uses: actions/checkout@v4 |
24 |
| - |
25 |
| - - name: Set up Node.js |
26 |
| - uses: actions/setup-node@v4 |
27 |
| - with: |
28 |
| - node-version: '20' |
29 |
| - |
30 |
| - - name: Create package.json |
31 |
| - run: echo '{}' > package.json |
32 |
| - |
33 |
| - - name: Install dependencies |
34 |
| - run: npm install @octokit/rest node-fetch |
35 |
| - |
36 |
| - - name: Detect languages and add labels |
37 |
| - env: |
38 |
| - GITHUB_TOKEN: ${{ github.token }} |
39 |
| - PR_NUM: ${{ github.event.number }} |
40 |
| - run: | |
41 |
| - node --input-type=module -e " |
42 |
| - import { Octokit } from '@octokit/rest'; |
43 |
| - import path from 'path'; |
44 |
| - import fetch from 'node-fetch'; |
45 |
| -
|
46 |
| - const octokit = new Octokit({ |
47 |
| - auth: process.env.GITHUB_TOKEN, |
48 |
| - request: { fetch } |
49 |
| - }); |
50 |
| -
|
51 |
| - const extensionsToLanguages = { |
52 |
| - js: 'js', |
53 |
| - ts: 'ts', |
54 |
| - py: 'py', |
55 |
| - java: 'java', |
56 |
| - kt: 'kotlin', |
57 |
| - cpp: 'c++', |
58 |
| - go: 'go', |
59 |
| - exs: 'elixir', |
60 |
| - swift: 'swift' |
61 |
| - // 필요한 다른 확장자와 언어 매핑 추가 |
62 |
| - }; |
63 |
| -
|
64 |
| - async function run() { |
65 |
| - const { data: files } = await octokit.pulls.listFiles({ |
66 |
| - owner: process.env.GITHUB_REPOSITORY.split('/')[0], |
67 |
| - repo: process.env.GITHUB_REPOSITORY.split('/')[1], |
68 |
| - pull_number: process.env.PR_NUM, |
69 |
| - }); |
70 |
| -
|
71 |
| - const languages = new Set(); |
72 |
| - files.forEach(file => { |
73 |
| - const ext = path.extname(file.filename).slice(1); |
74 |
| - if (extensionsToLanguages[ext]) { |
75 |
| - languages.add(extensionsToLanguages[ext]); |
76 |
| - } |
77 |
| - }); |
78 |
| -
|
79 |
| - if (languages.size > 0) { |
80 |
| - await octokit.issues.addLabels({ |
81 |
| - owner: process.env.GITHUB_REPOSITORY.split('/')[0], |
82 |
| - repo: process.env.GITHUB_REPOSITORY.split('/')[1], |
83 |
| - issue_number: process.env.PR_NUM, |
84 |
| - labels: Array.from(languages), |
85 |
| - }); |
86 |
| - } |
87 |
| - } |
88 |
| -
|
89 |
| - run(); |
90 |
| - " |
0 commit comments