diff --git a/CREDITS.md b/CREDITS.md index 5e14bcc4e..30105c2fa 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,262 +1,314 @@ -# Code contributors +# Code & Translators contributors - * [Chocobozzz](https://github.com/Chocobozzz) - * [rigelk](https://github.com/rigelk) - * [Nutomic](https://github.com/Nutomic) - * [gegeweb](https://github.com/gegeweb) - * [joshmorel](https://github.com/joshmorel) - * [Jorropo](https://github.com/Jorropo) - * [frankstrater](https://github.com/frankstrater) - * [buoyantair](https://github.com/buoyantair) - * [fflorent](https://github.com/fflorent) - * [bnjbvr](https://github.com/bnjbvr) - * [alcalyn](https://github.com/alcalyn) - * [jankeromnes](https://github.com/jankeromnes) - * [lucas-dclrcq](https://github.com/lucas-dclrcq) - * [JohnXLivingston](https://github.com/JohnXLivingston) - * [DavidLibeau](https://github.com/DavidLibeau) - * [kaiyou](https://github.com/kaiyou) - * [ldidry](https://github.com/ldidry) - * [McFlat](https://github.com/McFlat) - * [DimitriGilbert](https://github.com/DimitriGilbert) - * [floSoX](https://github.com/floSoX) - * [Green-Star](https://github.com/Green-Star) - * [NassimBounouas](https://github.com/NassimBounouas) - * [thomaskuntzz](https://github.com/thomaskuntzz) - * [rezonant](https://github.com/rezonant) - * [Wirebrass](https://github.com/Wirebrass) - * [clementbrizard](https://github.com/clementbrizard) - * [LecygneNoir](https://github.com/LecygneNoir) - * [angristan](https://github.com/angristan) - * [okhin](https://github.com/okhin) - * [daftaupe](https://github.com/daftaupe) - * [tcitworld](https://github.com/tcitworld) - * [dedesite](https://github.com/dedesite) - * [Nautigsam](https://github.com/Nautigsam) - * [scanlime](https://github.com/scanlime) - * [am97](https://github.com/am97) - * [dadall](https://github.com/dadall) - * [jonathanraes](https://github.com/jonathanraes) - * [yohanboniface](https://github.com/yohanboniface) - * [anoadragon453](https://github.com/anoadragon453) - * [auberanger](https://github.com/auberanger) - * [darnuria](https://github.com/darnuria) - * [rhaamo](https://github.com/rhaamo) - * [mrflos](https://github.com/mrflos) - * [Yetangitu](https://github.com/Yetangitu) - * [jocelynj](https://github.com/jocelynj) - * [lucaspontoexe](https://github.com/lucaspontoexe) - * [Findus23](https://github.com/Findus23) - * [flyingrub](https://github.com/flyingrub) - * [valvin1](https://github.com/valvin1) - * [taziden](https://github.com/taziden) - * [AutomCoding](https://github.com/AutomCoding) - * [sticmac](https://github.com/sticmac) - * [barbeque](https://github.com/barbeque) - * [luzpaz](https://github.com/luzpaz) - * [acid-chicken](https://github.com/acid-chicken) - * [louistio](https://github.com/louistio) - * [qsypoq](https://github.com/qsypoq) - * [daker](https://github.com/daker) - * [xyproto](https://github.com/xyproto) - * [NaPs](https://github.com/NaPs) - * [Anton-Latukha](https://github.com/Anton-Latukha) - * [noplanman](https://github.com/noplanman) - * [austinheap](https://github.com/austinheap) - * [BO41](https://github.com/BO41) - * [benabbottnz](https://github.com/benabbottnz) - * [ewft](https://github.com/ewft) - * [bradsk88](https://github.com/bradsk88) - * [trosel](https://github.com/trosel) - * [Ealhad](https://github.com/Ealhad) - * [claudehohl](https://github.com/claudehohl) - * [DeeJayBro](https://github.com/DeeJayBro) - * [dirkkelly](https://github.com/dirkkelly) - * [Edznux](https://github.com/Edznux) - * [ebrehault](https://github.com/ebrehault) - * [DatBewar](https://github.com/DatBewar) - * [ReK2Fernandez](https://github.com/ReK2Fernandez) - * [grizio](https://github.com/grizio) - * [Glandos](https://github.com/Glandos) - * [lanodan](https://github.com/lanodan) - * [HesioZ](https://github.com/HesioZ) - * [jacen92](https://github.com/jacen92) - * [realityfabric](https://github.com/realityfabric) - * [jlebras](https://github.com/jlebras) - * [Knackie](https://github.com/Knackie) - * [mkody](https://github.com/mkody) - * [pichouk](https://github.com/pichouk) - * [LeoMouyna](https://github.com/LeoMouyna) - * [Leopere](https://github.com/Leopere) - * [LiPeK](https://github.com/LiPeK) - * [radiantly](https://github.com/radiantly) - * [LoveIsGrief](https://github.com/LoveIsGrief) - * [zapashcanon](https://github.com/zapashcanon) - * [mart-e](https://github.com/mart-e) - * [0mp](https://github.com/0mp) - * [magopian](https://github.com/magopian) - * [mkoppmann](https://github.com/mkoppmann) - * [1000i100](https://github.com/1000i100) - * [roipoussiere](https://github.com/roipoussiere) - * [zallek](https://github.com/zallek) - * [zeograd](https://github.com/zeograd) - * [pjoubert-](https://github.com/pjoubert-) - * [gbip](https://github.com/gbip) - * [PhieF](https://github.com/PhieF) - * [pdurbin](https://github.com/pdurbin) - * [quentinDupont](https://github.com/quentinDupont) - * [Quenty31](https://github.com/Quenty31) - * [sundowndev](https://github.com/sundowndev) - * [robinkooli](https://github.com/robinkooli) - * [sesn](https://github.com/sesn) - * [ALSai](https://github.com/ALSai) - * [Simounet](https://github.com/Simounet) - * [sschueller](https://github.com/sschueller) - * [TrashMacNugget](https://github.com/TrashMacNugget) - * [FrozenDroid](https://github.com/FrozenDroid) - * [fallen](https://github.com/fallen) - * [melongbob](https://github.com/melongbob) - * [anmol26s](https://github.com/anmol26s) - * [imbsky](https://github.com/imbsky) - * [ctlaltdefeat](https://github.com/ctlaltdefeat) - * [jomo](https://github.com/jomo) - * [libertysoft3](https://github.com/libertysoft3) - * [lsde](https://github.com/lsde) - * [brain-zhang](https://github.com/brain-zhang) - * [norrist](https://github.com/norrist) - * [osauzet](https://github.com/osauzet) - * [SansPseudoFix](https://github.com/SansPseudoFix) - * [tomamplius](https://github.com/tomamplius) - * [tuxayo](https://github.com/tuxayo) - * [victor-long](https://github.com/victor-long) - * [zacharystenger](https://github.com/zacharystenger) - * [ewasion](https://github.com/ewasion) - - -# Translation contributors - - * [abdhessuk](https://trad.framasoft.org/zanata/profile/view/abdhessuk) - * [abidin24](https://trad.framasoft.org/zanata/profile/view/abidin24) - * [aditoo](https://trad.framasoft.org/zanata/profile/view/aditoo) - * [alice](https://trad.framasoft.org/zanata/profile/view/alice) - * [anastasia](https://trad.framasoft.org/zanata/profile/view/anastasia) - * [autom](https://trad.framasoft.org/zanata/profile/view/autom) - * [balaji](https://trad.framasoft.org/zanata/profile/view/balaji) - * [bristow](https://trad.framasoft.org/zanata/profile/view/bristow) - * [butterflyoffire](https://trad.framasoft.org/zanata/profile/view/butterflyoffire) - * [chocobozzz](https://trad.framasoft.org/zanata/profile/view/chocobozzz) - * [claichou](https://trad.framasoft.org/zanata/profile/view/claichou) - * [degrange](https://trad.framasoft.org/zanata/profile/view/degrange) - * [dibek](https://trad.framasoft.org/zanata/profile/view/dibek) - * [edu](https://trad.framasoft.org/zanata/profile/view/edu) - * [ehsaan](https://trad.framasoft.org/zanata/profile/view/ehsaan) - * [esoforte](https://trad.framasoft.org/zanata/profile/view/esoforte) - * [fkohrt](https://trad.framasoft.org/zanata/profile/view/fkohrt) - * [giqtaqisi](https://trad.framasoft.org/zanata/profile/view/giqtaqisi) - * [goofy](https://trad.framasoft.org/zanata/profile/view/goofy) - * [gorkaazk](https://trad.framasoft.org/zanata/profile/view/gorkaazk) - * [gwendald](https://trad.framasoft.org/zanata/profile/view/gwendald) - * [h3zjp](https://trad.framasoft.org/zanata/profile/view/h3zjp) - * [jfblanc](https://trad.framasoft.org/zanata/profile/view/jfblanc) - * [jhertel](https://trad.framasoft.org/zanata/profile/view/jhertel) - * [jmf](https://trad.framasoft.org/zanata/profile/view/jmf) - * [jorropo](https://trad.framasoft.org/zanata/profile/view/jorropo) - * [kairozen](https://trad.framasoft.org/zanata/profile/view/kairozen) - * [kedemferre](https://trad.framasoft.org/zanata/profile/view/kedemferre) - * [kousha](https://trad.framasoft.org/zanata/profile/view/kousha) - * [krkk](https://trad.framasoft.org/zanata/profile/view/krkk) - * [landrok](https://trad.framasoft.org/zanata/profile/view/landrok) - * [leeroyepold48](https://trad.framasoft.org/zanata/profile/view/leeroyepold48) - * [m4sk1n](https://trad.framasoft.org/zanata/profile/view/m4sk1n) - * [matograine](https://trad.framasoft.org/zanata/profile/view/matograine) - * [medow](https://trad.framasoft.org/zanata/profile/view/medow) - * [mhu](https://trad.framasoft.org/zanata/profile/view/mhu) - * [midgard](https://trad.framasoft.org/zanata/profile/view/midgard) - * [nbrucy](https://trad.framasoft.org/zanata/profile/view/nbrucy) - * [nitai](https://trad.framasoft.org/zanata/profile/view/nitai) - * [noncommutativegeo](https://trad.framasoft.org/zanata/profile/view/noncommutativegeo) - * [nopsidy](https://trad.framasoft.org/zanata/profile/view/nopsidy) - * [nvivant](https://trad.framasoft.org/zanata/profile/view/nvivant) - * [osoitz](https://trad.framasoft.org/zanata/profile/view/osoitz) - * [outloudvi](https://trad.framasoft.org/zanata/profile/view/outloudvi) - * [quentin](https://trad.framasoft.org/zanata/profile/view/quentin) - * [quentind](https://trad.framasoft.org/zanata/profile/view/quentind) - * [rafaelff](https://trad.framasoft.org/zanata/profile/view/rafaelff) - * [rigelk](https://trad.framasoft.org/zanata/profile/view/rigelk) - * [s8321414](https://trad.framasoft.org/zanata/profile/view/s8321414) - * [sato_ss](https://trad.framasoft.org/zanata/profile/view/sato_ss) - * [sercom_kc](https://trad.framasoft.org/zanata/profile/view/sercom_kc) - * [severo](https://trad.framasoft.org/zanata/profile/view/severo) - * [silkevicious](https://trad.framasoft.org/zanata/profile/view/silkevicious) - * [sosha](https://trad.framasoft.org/zanata/profile/view/sosha) - * [spla](https://trad.framasoft.org/zanata/profile/view/spla) - * [strubbl](https://trad.framasoft.org/zanata/profile/view/strubbl) - * [swedneck](https://trad.framasoft.org/zanata/profile/view/swedneck) - * [tagomago](https://trad.framasoft.org/zanata/profile/view/tagomago) - * [talone](https://trad.framasoft.org/zanata/profile/view/talone) - * [thibaultmartin](https://trad.framasoft.org/zanata/profile/view/thibaultmartin) - * [tirifto](https://trad.framasoft.org/zanata/profile/view/tirifto) - * [tuxayo](https://trad.framasoft.org/zanata/profile/view/tuxayo) - * [unextro](https://trad.framasoft.org/zanata/profile/view/unextro) - * [unzarida](https://trad.framasoft.org/zanata/profile/view/unzarida) - * [vincent](https://trad.framasoft.org/zanata/profile/view/vincent) - * [wanhua](https://trad.framasoft.org/zanata/profile/view/wanhua) - * [xinayder](https://trad.framasoft.org/zanata/profile/view/xinayder) - * [xosem](https://trad.framasoft.org/zanata/profile/view/xosem) - * [zveryok](https://trad.framasoft.org/zanata/profile/view/zveryok) - * [6543](https://trad.framasoft.org/zanata/profile/view/6543) - * [aasami](https://trad.framasoft.org/zanata/profile/view/aasami) - * [alidemirtas](https://trad.framasoft.org/zanata/profile/view/alidemirtas) - * [alpha](https://trad.framasoft.org/zanata/profile/view/alpha) - * [ariasuni](https://trad.framasoft.org/zanata/profile/view/ariasuni) - * [bfonton](https://trad.framasoft.org/zanata/profile/view/bfonton) - * [c0dr](https://trad.framasoft.org/zanata/profile/view/c0dr) - * [canony](https://trad.framasoft.org/zanata/profile/view/canony) - * [cat](https://trad.framasoft.org/zanata/profile/view/cat) - * [clerie](https://trad.framasoft.org/zanata/profile/view/clerie) - * [curupira](https://trad.framasoft.org/zanata/profile/view/curupira) - * [dhsets](https://trad.framasoft.org/zanata/profile/view/dhsets) - * [digitalkiller](https://trad.framasoft.org/zanata/profile/view/digitalkiller) - * [dwsage](https://trad.framasoft.org/zanata/profile/view/dwsage) - * [flauta](https://trad.framasoft.org/zanata/profile/view/flauta) - * [frankstrater](https://trad.framasoft.org/zanata/profile/view/frankstrater) - * [gillux](https://trad.framasoft.org/zanata/profile/view/gillux) - * [gunchleoc](https://trad.framasoft.org/zanata/profile/view/gunchleoc) - * [jaidedtd](https://trad.framasoft.org/zanata/profile/view/jaidedtd) - * [joss2lyon](https://trad.framasoft.org/zanata/profile/view/joss2lyon) - * [kekkotranslates](https://trad.framasoft.org/zanata/profile/view/kekkotranslates) - * [kingu](https://trad.framasoft.org/zanata/profile/view/kingu) - * [kittybecca](https://trad.framasoft.org/zanata/profile/view/kittybecca) - * [knuxify](https://trad.framasoft.org/zanata/profile/view/knuxify) - * [lapor](https://trad.framasoft.org/zanata/profile/view/lapor) - * [laufor](https://trad.framasoft.org/zanata/profile/view/laufor) - * [lstamellos](https://trad.framasoft.org/zanata/profile/view/lstamellos) - * [lw1](https://trad.framasoft.org/zanata/profile/view/lw1) - * [mablr](https://trad.framasoft.org/zanata/profile/view/mablr) - * [marcinmalecki](https://trad.framasoft.org/zanata/profile/view/marcinmalecki) - * [mayana](https://trad.framasoft.org/zanata/profile/view/mayana) - * [mikeorlov](https://trad.framasoft.org/zanata/profile/view/mikeorlov) - * [nin](https://trad.framasoft.org/zanata/profile/view/nin) - * [norbipeti](https://trad.framasoft.org/zanata/profile/view/norbipeti) - * [ppnplus](https://trad.framasoft.org/zanata/profile/view/ppnplus) - * [predatorix](https://trad.framasoft.org/zanata/profile/view/predatorix) - * [robin](https://trad.framasoft.org/zanata/profile/view/robin) - * [rond](https://trad.framasoft.org/zanata/profile/view/rond) - * [secreet](https://trad.framasoft.org/zanata/profile/view/secreet) - * [sftblw](https://trad.framasoft.org/zanata/profile/view/sftblw) - * [sporiff](https://trad.framasoft.org/zanata/profile/view/sporiff) - * [tekuteku](https://trad.framasoft.org/zanata/profile/view/tekuteku) - * [thecatjustmeow](https://trad.framasoft.org/zanata/profile/view/thecatjustmeow) - * [tmota](https://trad.framasoft.org/zanata/profile/view/tmota) - * [uranix](https://trad.framasoft.org/zanata/profile/view/uranix) - * [wakutiteo](https://trad.framasoft.org/zanata/profile/view/wakutiteo) - * [wonderingdane](https://trad.framasoft.org/zanata/profile/view/wonderingdane) - * [zeynepeliacik](https://trad.framasoft.org/zanata/profile/view/zeynepeliacik) + * Chocobozzz + * Rigel Kent + * Bigard Florian + * Felix Ableitner + * Gérald Niel + * Jorropo + * Josh Morel + * BO41 + * Julien Maulny + * Filip Bengtsson + * Frank Sträter + * buoyantair + * Attila F + * Benjamin Bouvier + * Jan Keromnes + * John Livingston + * Lucas Declercq + * David Libeau + * Florent F + * Francesc + * Luc Didry + * Nassim Bounouas + * BRAINS YUM + * Dimitri Gilbert + * Florent Poinsaut + * Green-Star + * Micah Elizabeth Scott + * Phongpanot + * SVNET Libre + * Thomas Kuntz + * William Lahti + * Wirebrass + * Angristan + * GunChleoc + * Okhin + * Pierre-Alain TORET + * Thomas Citharel + * clementbrizard + * kaiyou + * Andréas Livet + * Andrés Maldonado + * Aurélien Bertron + * Hans Meiser + * Jefferson Hernandez + * Kemal Oktay Aktoğan + * LecygneNoir + * Leopere + * Marcin Mikołajczak + * Yohan Boniface + * am97 + * anotheranonymoususer + * dada + * frankdelange + * jonathanraes + * Andrew Morgan + * Aurélien Béranger + * Axel Viala + * ButterflyOfFire + * Dashie + * Dirk Kelly + * Florent Fayolle + * Florian + * Frank de Lange + * Gaëtan Rizio + * Jocelyn Jaubert + * Julien Lemaire + * Lucas Teixeira + * Lukas Winkler + * Millicent Billette + * NorbiPeti + * Pierre Jaury + * Quentin + * Ronan + * SerCom_KC + * Valvin + * ahmadsharifian + * taziden + * victor héry + * Acid Chicken (硫酸鶏) + * Adam Gauthier + * Adam Magnier + * Adnane Belmadiaf + * Alexander F. Rødseth + * Antoine Millet + * Anton Latukha + * Armando Lüscher + * Artem Prosvetov + * Asier Iturralde Sarasola + * Austin Heap + * Autom + * Ben Abbott + * Ben Lubar + * Benjamin EWFT + * Brad Johnson + * Cale + * Ch + * Charles de Lacombe + * Claude + * Clément Brizard + * DeeJayBro + * DontUseGithub + * Edouard SCHWEISGUTH + * Edwin Alberto Amado Baron + * Eric Brehault + * Erwan Croze + * Fabio Agreles Bezerra + * Fernandez, ReK2 + * Glandos + * Haelwenn (lanodan) Monnier + * HesioZ + * Jacen + * Jacob + * Jacques Foucry + * Jagannath Bhat + * Jarosław Maciejewski + * Jeff Huang + * Jessica Fairchild + * Julien Le Bras + * Knackie + * Kody + * Kyâne Pichou + * Leo Mouyna + * Lesterpig + * LiPeK + * Lint + * LoveIsGrief + * Léo Andrès + * ManMade-cube42 + * Manuel Viens + * Marco Zehe + * Markus Richter + * Martin Trigaux + * Mateusz Piotrowski + * Mathieu Agopian + * Matthieu De Beule + * Michael Koppmann + * Mike + * MrGiga + * Mélanie Pin + * Nathanaël J + * Nicolas Fortin + * Niklas Reimer + * Nitesh Sawant + * Olivier Jolly + * Pablo Joubert + * Paul FLORENCE + * PhieF + * Philip Durbin + * Predatorix Phoenix + * Quentin Dupont + * Quentí + * Raphael + * Robin + * Sankar + * Simon Gilliot + * Simounet + * Stefan Schüller + * Tomás Sebastián Romero + * TrashMacNugget + * Vincent Stakenburg + * Yann Sionneau + * Yorwba + * Yun + * Zig-03 + * anmol26s + * augier + * bikepunk + * bsky + * ctlaltdefeat + * jomo + * libertysoft3 + * lsde + * luz.paz + * luzpaz + * memorybox + * mike stedman + * morteza + * norrist + * numéro6 + * osauzet + * potedeo + * spf + * tilllt + * tomamplius + * tuxayo + * victor-long + * zacharystenger + * ‮noisawe + * abdhessuk + * abidin24 + * aditoo + * alice + * anastasia + * autom + * balaji + * bristow + * butterflyoffire + * claichou + * degrange + * dibek + * edu + * ehsaan + * esoforte + * fkohrt + * giqtaqisi + * goofy + * gorkaazk + * gwendald + * h3zjp + * jfblanc + * jhertel + * jmf + * jorropo + * kairozen + * kedemferre + * kousha + * krkk + * landrok + * leeroyepold48 + * m4sk1n + * matograine + * medow + * mhu + * midgard + * nbrucy + * nitai + * noncommutativegeo + * nopsidy + * nvivant + * osoitz + * outloudvi + * quentin + * quentind + * rafaelff + * rigelk + * s8321414 + * sato_ss + * sercom_kc + * severo + * silkevicious + * sosha + * spla + * strubbl + * swedneck + * tagomago + * talone + * thibaultmartin + * tirifto + * tuxayo + * unextro + * unzarida + * vincent + * wanhua + * xinayder + * xosem + * zveryok + * 6543 + * aasami + * alidemirtas + * alpha + * ariasuni + * bfonton + * c0dr + * canony + * cat + * clerie + * curupira + * dhsets + * digitalkiller + * dwsage + * flauta + * frankstrater + * gillux + * gunchleoc + * jaidedtd + * joss2lyon + * kekkotranslates + * kingu + * kittybecca + * knuxify + * lapor + * laufor + * lstamellos + * lw1 + * mablr + * marcinmalecki + * mayana + * mikeorlov + * nin + * norbipeti + * ppnplus + * predatorix + * robin + * rond + * secreet + * sftblw + * sporiff + * tekuteku + * thecatjustmeow + * tmota + * uranix + * wakutiteo + * wonderingdane + * zeynepeliacik # Design - * [Olivier Massain](https://twitter.com/omassain) + * [Olivier Massain](https://dribbble.com/omassain) # Icons diff --git a/scripts/generate-code-contributors.ts b/scripts/generate-code-contributors.ts index 5635d9889..5c6620f7d 100755 --- a/scripts/generate-code-contributors.ts +++ b/scripts/generate-code-contributors.ts @@ -5,6 +5,7 @@ registerTSPaths() import { doRequest } from '../server/helpers/requests' import { readFileSync } from 'fs-extra' import { uniqBy } from 'lodash' +import { execCLI } from '@shared/extra-utils' run() .then(() => process.exit(0)) @@ -14,33 +15,20 @@ run() }) async function run () { + const blacklist = getContributorsBlacklist() - { - const contributors = await fetchGithub('https://api.github.com/repos/chocobozzz/peertube/contributors') + let contributors = await getGitContributors() + contributors = contributors.concat(getZanataContributors()) + contributors = contributors.filter(c => blacklist[c.username] !== true) - console.log('# Code contributors\n') - for (const contributor of contributors) { - const contributorUrl = contributor.url.replace('api.github.com/users', 'github.com') - console.log(` * [${contributor.login}](${contributorUrl})`) - } - } - - { - const zanataConfig = readFileSync(require('os').homedir() + '/.config/zanata.ini').toString() - const zanataUsername = zanataConfig.match('.username=([^\n]+)')[1] - const zanataToken = zanataConfig.match('.key=([^\n]+)')[1] - - const translators = await fetchZanata(zanataUsername, zanataToken) - - console.log('\n\n# Translation contributors\n') - for (const translator of translators) { - console.log(` * [${translator.username}](https://trad.framasoft.org/zanata/profile/view/${translator.username})`) - } + console.log('# Code & Translators contributors\n') + for (const contributor of contributors) { + console.log(` * ${contributor.username}`) } { console.log('\n\n# Design\n') - console.log(' * [Olivier Massain](https://twitter.com/omassain)') + console.log(' * [Olivier Massain](https://dribbble.com/omassain)') console.log('\n\n# Icons\n') console.log(' * [Robbie Pearce](https://robbiepearce.com/softies/)') @@ -49,47 +37,140 @@ async function run () { } } -function get (url: string, headers: any = {}) { - return doRequest({ - uri: url, - json: true, - headers: Object.assign(headers, { - 'User-Agent': 'PeerTube-App' - }) - }).then(res => res.body) +async function getGitContributors () { + const output = await execCLI(`git --no-pager shortlog -sn < /dev/tty | sed 's/^\\s\\+[0-9]\\+\\s\\+//g'`) + + return output.split('\n') + .filter(l => !!l) + .map(l => ({ username: l })) } -async function fetchGithub (url: string) { - let next = url - let allResult = [] +// Zanata is dead, don't loose the contributors name +function getZanataContributors () { + return [ { 'username': 'abdhessuk', 'name': 'Abd Hessuk' }, { 'username': 'abidin24', 'name': 'abidin toumi' }, { + 'username': 'aditoo', + 'name': 'Lorem Ipsum' + }, { 'username': 'alice', 'name': 'Alice' }, { 'username': 'anastasia', 'name': 'Anastasia' }, { + 'username': 'autom', + 'name': 'Filip Bengtsson' + }, { 'username': 'balaji', 'name': 'Balaji' }, { 'username': 'bristow', 'name': 'Cédric F.' }, { + 'username': 'butterflyoffire', + 'name': 'ButterflyOfFire' + }, { 'username': 'chocobozzz', 'name': 'Chocobozzz' }, { 'username': 'claichou', 'name': 'Claire Mohin' }, { + 'username': 'degrange', + 'name': 'Degrange Mathieu' + }, { 'username': 'dibek', 'name': 'Giuseppe Di Bella' }, { 'username': 'edu', 'name': 'eduardo' }, { + 'username': 'ehsaan', + 'name': 'ehsaan' + }, { 'username': 'esoforte', 'name': 'Ondřej Kotas' }, { 'username': 'fkohrt', 'name': 'Florian Kohrt' }, { + 'username': 'giqtaqisi', + 'name': 'Ian Townsend' + }, { 'username': 'goofy', 'name': 'goofy' }, { 'username': 'gorkaazk', 'name': 'Gorka Azkarate Zubiaur' }, { + 'username': 'gwendald', + 'name': 'GwendalD' + }, { 'username': 'h3zjp', 'name': 'h3zjp' }, { 'username': 'jfblanc', 'name': 'Joan Francés Blanc' }, { + 'username': 'jhertel', + 'name': 'Jean Hertel' + }, { 'username': 'jmf', 'name': 'Jan-Michael Franz' }, { 'username': 'jorropo', 'name': 'Jorropo' }, { + 'username': 'kairozen', + 'name': 'Geoffrey Baudelet' + }, { 'username': 'kedemferre', 'name': 'Kédem Ferré' }, { 'username': 'kousha', 'name': 'Kousha Zanjani' }, { + 'username': 'krkk', + 'name': 'Karol Kosek' + }, { 'username': 'landrok', 'name': 'Landrok' }, { 'username': 'leeroyepold48', 'name': 'Leeroy Epold' }, { + 'username': 'm4sk1n', + 'name': 'marcin mikołajczak' + }, { 'username': 'matograine', 'name': 'tom ngr' }, { 'username': 'medow', 'name': 'Mahir Ahmed' }, { + 'username': 'mhu', + 'name': 'Max Hübner' + }, { 'username': 'midgard', 'name': 'Midgard' }, { 'username': 'nbrucy', 'name': 'N. B.' }, { + 'username': 'nitai', + 'name': 'nitai bezerra' + }, { 'username': 'noncommutativegeo', 'name': 'Andrea Panontin' }, { 'username': 'nopsidy', 'name': 'McFlat' }, { + 'username': 'nvivant', + 'name': 'Nicolas Vivant' + }, { 'username': 'osoitz', 'name': 'Osoitz' }, { 'username': 'outloudvi', 'name': 'Outvi V' }, { + 'username': 'quentin', + 'name': 'Quentí' + }, { 'username': 'quentind', 'name': 'Quentin Dupont' }, { 'username': 'rafaelff', 'name': 'Rafael Fontenelle' }, { + 'username': 'rigelk', + 'name': 'Rigel Kent' + }, { 'username': 's8321414', 'name': 'Jeff Huang' }, { 'username': 'sato_ss', 'name': 'Satoshi Shirosaka' }, { + 'username': 'sercom_kc', + 'name': 'SerCom_KC' + }, { 'username': 'severo', 'name': 'Sylvain Lesage' }, { 'username': 'silkevicious', 'name': 'Sylke Vicious' }, { + 'username': 'sosha', + 'name': 'Sosha' + }, { 'username': 'spla', 'name': 'spla' }, { 'username': 'strubbl', 'name': 'Sven' }, { + 'username': 'swedneck', + 'name': 'Tim Stahel' + }, { 'username': 'tagomago', 'name': 'Tagomago' }, { 'username': 'talone', 'name': 'TitiAlone' }, { + 'username': 'thibaultmartin', + 'name': 'Thibault Martin' + }, { 'username': 'tirifto', 'name': 'Tirifto' }, { 'username': 'tuxayo', 'name': 'Victor Grousset/tuxayo' }, { + 'username': 'unextro', + 'name': 'Ondřej Pokorný' + }, { 'username': 'unzarida', 'name': 'unzarida' }, { 'username': 'vincent', 'name': 'Vincent Laporte' }, { + 'username': 'wanhua', + 'name': 'wanhua' + }, { 'username': 'xinayder', 'name': 'Alexandre' }, { 'username': 'xosem', 'name': 'Xosé M.' }, { + 'username': 'zveryok', + 'name': 'Nikitin Stanislav' + }, { 'username': '6543', 'name': '6543' }, { 'username': 'aasami', 'name': 'Miroslav Ďurian' }, { + 'username': 'alidemirtas', + 'name': 'Ali Demirtas' + }, { 'username': 'alpha', 'name': 'Alpha' }, { 'username': 'ariasuni', 'name': 'Mélanie Chauvel' }, { + 'username': 'bfonton', + 'name': 'Baptiste Fonton' + }, { 'username': 'c0dr', 'name': 'c0dr lnx' }, { 'username': 'canony', 'name': 'canony' }, { + 'username': 'cat', + 'name': 'Cat' + }, { 'username': 'clerie', 'name': 'Clemens Riese' }, { 'username': 'curupira', 'name': 'Curupira' }, { + 'username': 'dhsets', + 'name': 'djsets' + }, { 'username': 'digitalkiller', 'name': 'Digital Killer' }, { 'username': 'dwsage', 'name': 'd.w. sage' }, { + 'username': 'flauta', + 'name': 'Andrea Primiani' + }, { 'username': 'frankstrater', 'name': 'Frank Sträter' }, { 'username': 'gillux', 'name': 'gillux' }, { + 'username': 'gunchleoc', + 'name': 'GunChleoc' + }, { 'username': 'jaidedtd', 'name': 'Jenga Phoenix' }, { 'username': 'joss2lyon', 'name': 'Josselin' }, { + 'username': 'kekkotranslates', + 'name': 'Francesco' + }, { 'username': 'kingu', 'name': 'Allan Nordhøy' }, { 'username': 'kittybecca', 'name': 'Rivka bat Tsvi' }, { + 'username': 'knuxify', + 'name': 'knuxify' + }, { 'username': 'lapor', 'name': 'Kristijan Tkalec' }, { 'username': 'laufor', 'name': 'Lau For' }, { + 'username': 'lstamellos', + 'name': 'Loukas Stamellos' + }, { 'username': 'lw1', 'name': 'Lukas Winkler' }, { 'username': 'mablr', 'name': 'Mablr' }, { + 'username': 'marcinmalecki', + 'name': 'Marcin Małecki' + }, { 'username': 'mayana', 'name': 'Mayana' }, { 'username': 'mikeorlov', 'name': 'Michael Orlov' }, { + 'username': 'nin', + 'name': 'nz' + }, { 'username': 'norbipeti', 'name': 'NorbiPeti' }, { 'username': 'ppnplus', 'name': 'Phongpanot Phairat' }, { + 'username': 'predatorix', + 'name': 'Predatorix' + }, { 'username': 'robin', 'name': 'Robin Lahtinen' }, { 'username': 'rond', 'name': 'rondnelly nunes' }, { + 'username': 'secreet', + 'name': 'Secreet' + }, { 'username': 'sftblw', 'name': 'sftblw' }, { 'username': 'sporiff', 'name': 'Ciarán Ainsworth' }, { + 'username': 'tekuteku', + 'name': 'tekuteku' + }, { 'username': 'thecatjustmeow', 'name': 'Nguyen Huynh Hung' }, { 'username': 'tmota', 'name': 'Tiago Mota' }, { + 'username': 'uranix', + 'name': 'Michal Mauser' + }, { 'username': 'wakutiteo', 'name': 'Markel' }, { + 'username': 'wonderingdane', + 'name': 'Nicolai Ireneo-Larsen' + }, { 'username': 'zeynepeliacik', 'name': 'Zeynep Can' } ] +} - let i = 1 - - // Hard limit - while (i < 20) { - const result = await get(next + '?page=' + i) - if (result.length === 0) break - - allResult = allResult.concat(result) - i++ +function getContributorsBlacklist () { + return { + 'Florian Bigard': true, + 'chocobozzz': true, + 'Rigel': true } - - return allResult -} - -async function fetchZanata (zanataUsername: string, zanataPassword: string) { - const today = new Date().toISOString().split('T')[0] - const year2018 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2018-01-01..2019-01-01` - const year2019 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2019-01-01..${today}` - - const headers = { - 'X-Auth-User': zanataUsername, - 'X-Auth-Token': zanataPassword - } - const [ results2018, results2019 ] = await Promise.all([ - get(year2018, headers), - get(year2019, headers) - ]) - - return uniqBy(results2018.concat(results2019) as { username: string }[], 'username') } diff --git a/shared/extra-utils/cli/cli.ts b/shared/extra-utils/cli/cli.ts index 54d05e9c6..d532b62b0 100644 --- a/shared/extra-utils/cli/cli.ts +++ b/shared/extra-utils/cli/cli.ts @@ -6,7 +6,7 @@ function getEnvCli (server?: ServerInfo) { return `NODE_ENV=test NODE_APP_INSTANCE=${server.serverNumber}` } -async function execCLI (command: string) { +async function execCLI (command: string,) { return new Promise((res, rej) => { exec(command, (err, stdout, stderr) => { if (err) return rej(err)