|
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