]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - scripts/generate-code-contributors.ts
Update translations
[github/Chocobozzz/PeerTube.git] / scripts / generate-code-contributors.ts
CommitLineData
2aaa1a3f
C
1import { registerTSPaths } from '../server/helpers/register-ts-paths'
2registerTSPaths()
3
92d83c6a 4import { doRequest } from '../server/helpers/requests'
c9d5c64f 5import { readFileSync } from 'fs-extra'
92d83c6a
C
6
7run()
8 .then(() => process.exit(0))
9 .catch(err => {
10 console.error(err)
11 process.exit(-1)
12 })
13
14async function run () {
15
16 {
17 const contributors = await fetchGithub('https://api.github.com/repos/chocobozzz/peertube/contributors')
18
1eb23e12 19 console.log('# Code contributors\n')
92d83c6a
C
20 for (const contributor of contributors) {
21 const contributorUrl = contributor.url.replace('api.github.com/users', 'github.com')
22 console.log(` * [${contributor.login}](${contributorUrl})`)
23 }
24 }
25
26 {
27 const zanataConfig = readFileSync(require('os').homedir() + '/.config/zanata.ini').toString()
28 const zanataUsername = zanataConfig.match('.username=([^\n]+)')[1]
29 const zanataToken = zanataConfig.match('.key=([^\n]+)')[1]
30
31 const translators = await fetchZanata(zanataUsername, zanataToken)
32
1eb23e12 33 console.log('\n\n# Translation contributors\n')
92d83c6a
C
34 for (const translator of translators) {
35 console.log(` * [${translator.username}](https://trad.framasoft.org/zanata/profile/view/${translator.username})`)
36 }
37 }
38
39 {
40 console.log('\n\n# Design\n')
19041ac8
C
41 console.log(' * [Olivier Massain](https://twitter.com/omassain)')
42
43 console.log('\n\n# Icons\n')
44 console.log(' * [Robbie Pearce](https://robbiepearce.com/softies/)')
45 console.log(' * [Fork-Awesome](https://github.com/ForkAwesome/Fork-Awesome)')
46 console.log(' * playlist add by Google')
92d83c6a
C
47 }
48}
49
50function get (url: string, headers: any = {}) {
4c280004 51 return doRequest<any>({
92d83c6a
C
52 uri: url,
53 json: true,
54 headers: Object.assign(headers, {
55 'User-Agent': 'PeerTube-App'
56 })
57 }).then(res => res.body)
58}
59
60async function fetchGithub (url: string) {
61 let next = url
62 let allResult = []
63
64 let i = 1
65
66 // Hard limit
67 while (i < 20) {
68 const result = await get(next + '?page=' + i)
69 if (result.length === 0) break
70
71 allResult = allResult.concat(result)
72 i++
73 }
74
75 return allResult
76}
77
78async function fetchZanata (zanataUsername: string, zanataPassword: string) {
79 const today = new Date().toISOString().split('T')[0]
93f85e90
C
80 const year2018 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2018-01-01..2019-01-01`
81 const year2019 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2019-01-01..${today}`
92d83c6a
C
82
83 const headers = {
84 'X-Auth-User': zanataUsername,
85 'X-Auth-Token': zanataPassword
86 }
93f85e90
C
87 const [ results2018, results2019 ] = await Promise.all([
88 get(year2018, headers),
89 get(year2019, headers)
90 ])
91
92 return results2018.concat(results2019)
92d83c6a 93}