]>
Commit | Line | Data |
---|---|---|
2aaa1a3f C |
1 | import { registerTSPaths } from '../server/helpers/register-ts-paths' |
2 | registerTSPaths() | |
3 | ||
92d83c6a | 4 | import { doRequest } from '../server/helpers/requests' |
c9d5c64f | 5 | import { readFileSync } from 'fs-extra' |
92d83c6a C |
6 | |
7 | run() | |
8 | .then(() => process.exit(0)) | |
9 | .catch(err => { | |
10 | console.error(err) | |
11 | process.exit(-1) | |
12 | }) | |
13 | ||
14 | async 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 | ||
50 | function 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 | ||
60 | async 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 | ||
78 | async 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 | } |