From 31610d0db42b4f61f85841a0d58f5014c98d0fc5 Mon Sep 17 00:00:00 2001 From: Julien Gilli Date: Thu, 22 Jan 2015 18:53:49 -0800 Subject: [PATCH] tools: improve tooling around AUTHORS file Replace tools/updateAuthors.awk with tools/update-authors.js. The new tool generates an AUTHORS file that is stable-ordered alphanumerically. Fixes #9077. PR: #9088 PR-URL: https://github.com/joyent/node/pull/9088 Reviewed-By: Timothy J Fontaine --- .mailmap | 12 + AUTHORS | 1238 +++++++++++++++++++++------------------ tools/common.js | 149 +++++ tools/update-authors.js | 144 +++++ tools/updateAuthors.awk | 13 - 5 files changed, 961 insertions(+), 595 deletions(-) create mode 100644 tools/common.js create mode 100644 tools/update-authors.js delete mode 100644 tools/updateAuthors.awk diff --git a/.mailmap b/.mailmap index f520145803..f3a15d1eca 100644 --- a/.mailmap +++ b/.mailmap @@ -2,6 +2,8 @@ Aaron Heckmann Abe Fettig Alex Kocharin Alex Kocharin +Alexey Kupershtokh +Alexis Campailla Alexis Sellier Alexis Sellier Arlo Breault @@ -13,10 +15,12 @@ Bert Belder Bert Belder Bert Belder Brandon Benvie +Brandon Cheng Brian White Brian White Chew Choon Keat Christopher Lenz +Colin Ihrig Daniel Berger Daniel Chcouri <333222@gmail.com> Daniel Gröber @@ -25,6 +29,7 @@ Daniel Pihlström Dave Pacheco David Siegel Domenic Denicola +Doron Pagot Eduard Burtescu Einar Otto Stangvik Elliott Cable @@ -38,6 +43,7 @@ Friedemann Altrock Fuji Goro Gabriel de Perthuis Gil Pedersen +Guillaume Goussard Henry Chin Herbert Vojčík Igor Soarez @@ -46,6 +52,7 @@ Isaac Z. Schlueter Isaac Z. Schlueter Jake Verbaten Jered Schmidt +Jochen Eisinger Joe Shaw Johan Bergström Johan Dahlberg @@ -69,6 +76,7 @@ Micheil Smith Mikael Bourges-Sevenier Nebu Pookins Nicholas Kinsey +Nicholas Vavilov Onne Gorter Paul Querna Ray Morgan @@ -104,8 +112,10 @@ Trevor Burnham Tyler Larson Vincent Voyer Willi Eggeling +Yiyu He Yoshihiro KIKUCHI Yuichiro MASUI +Yunsong Guo Zachary Scott Zoran Tomicic @@ -120,3 +130,5 @@ Michael Starzinger Toon Verwaest Vyacheslav Egorov Yang Guo +Dan Carney +Sven Panne diff --git a/AUTHORS b/AUTHORS index 3dfbf5ae00..7451cc7722 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,582 +1,656 @@ -# Authors ordered by first contribution. - -Ryan Dahl -Urban Hafner -Joshaven Potter -Abe Fettig -Kevin van Zonneveld -Michael Carter -Jeff Smick -Jon Crosby -Felix Geisendörfer -Ray Morgan -Jérémy Lal -Isaac Z. Schlueter -Brandon Beacher -Tim Caswell -Connor Dunn -Johan Sørensen -Friedemann Altrock -Onne Gorter -Rhys Jones -Jan Lehnardt -Simon Willison -Chew Choon Keat -Jered Schmidt -Michaeljohn Clement -Karl Guertin -Xavier Shay -Christopher Lenz -TJ Holowaychuk -Johan Dahlberg -Simon Cornelius P. Umacob -Ryan McGrath -Rasmus Andersson -Micheil Smith -Jonas Pfenniger -David Sklar -Charles Lehner -Elliott Cable -Benjamin Thomas -San-Tai Hsu -Ben Williamson -Joseph Pecoraro -Erich Ocean -Alexis Sellier -Blaine Cook -Stanislav Opichal -Aaron Heckmann -Mikeal Rogers -Matt Brubeck -Michael Stillwell -Yuichiro MASUI -Mark Hansen -Zoran Tomicic -Jeremy Ashkenas -Scott González -James Duncan -Arlo Breault -Kris Kowal -Jacek Becela -Rob Ellis -Tim Smart -Herbert Vojčík -Krishna Rajendran -Nicholas Kinsey -Scott Taylor -Carson McDonald -Matt Ranney -James Herdman -Julian Lamb -Brian Hammond -Mathias Pettersson -Trevor Blackwell -Thomas Lee -Daniel Berger -Paulo Matias -Peter Griess -Jonathan Knezek -Jonathan Rentzsch -Ben Noordhuis -Elijah Insua -Andrew Johnston -Brian White -Aapo Laitinen -Sam Hughes -Orlando Vazquez -Raffaele Sena -Brian McKenna -Paul Querna -Ben Lowery -Peter Dekkers -David Siegel -Marshall Culpepper -Ruben Rodriguez -Dmitry Baranovskiy -Blake Mizerany -Jerome Etienne -Dmitriy Shalashov -Adam Wiggins -Rick Olson -Sergey Kryzhanovsky -Marco Rogers -Benjamin Fritsch -Jan Kassens -Robert Keizer -Sam Shull -Chandra Sekar S -Andrew Naylor -Benjamin Kramer -Danny Coates -Nick Stenning -Bert Belder -Trent Mick -Fedor Indutny -Illarionov Oleg -Aria Stewart -Johan Euphrosine -Russell Haering -Bradley Meck -Tobie Langel -Tony Metzidis -Mark Nottingham -Sam Stephenson -Jorge Chamorro Bieling -Evan Larkin -Sean Coates -Tom Hughes-Croucher -Joshua Peek -Nathan Rajlich -Peteris Krumins -AJ ONeal -Sami Samhuri -Nikhil Marathe -Vitali Lovich -Stéphan Kochen -Oleg Efimov -Guillaume Tuton -Tim Cooijmans -Dan Søndergaard -Silas Sewell -Wade Simmons -Daniel Gröber -Travis Swicegood -Oleg Slobodskoi -Jeremy Martin -Michael Wilber -Sean Braithwaite -Anders Conbere -Devin Torres -Theo Schlossnagle -Kai Chen -Daniel Chcouri <333222@gmail.com> -Mihai Călin Bazon -Ali Farhadi -Daniel Ennis -Carter Allen -Greg Hughes -David Trejo -Joe Walnes -Koichi Kobayashi -Konstantin Käfer -Richard Rodger -Andreas Reich -Tony Huang -Dean McNamee -Trevor Burnham -Zachary Scott -Arnout Kazemier -George Stagas -Ben Weaver -Scott McWhirter -Jakub Lekstan -Nick Campbell -Nebu Pookins -Tim Baumann -Robert Mustacchi -George Miroshnykov -Mark Cavage -Håvard Stranden -Marcel Laverdet -Alexandre Marangone -Ryan Petrello -Fuji Goro -Siddharth Mahendraker -Dave Pacheco -Mathias Buus -Henry Rawas -Yoshihiro KIKUCHI -Brett Kiefer -Mariano Iglesias -Jörn Horstmann -Joe Shaw -Niklas Fiekas -Adam Luikart -Artem Zaytsev -Alex Xu -Jeremy Selier -Igor Zinkovsky -Kip Gebhardt -Stefan Rusu -Shigeki Ohtsu -Wojciech Wnętrzak -Devon Govett -Steve Engledow -Pierre-Alexandre St-Jean -Reid Burke -Vicente Jimenez Aguilar -Tadashi SAWADA -Jeroen Janssen -Daniel Pihlström -Stefan Bühler -Alexander Uvarov -Aku Kotkavuo -Peter Bright -Logan Smyth -Christopher Wright -Glen Low -Thomas Shinnick -Mickaël Delahaye -Antranig Basman -Maciej Małecki -Evan Martin -Peter Lyons -Jann Horn -Abimanyu Raja -Niclas Hoyer -Karl Skomski -Michael Jackson -Ashok Mudukutore -Sean Cunningham -Vitor Balocco -Ben Leslie -Eric Lovett -Christian Tellnes -Colton Baker -Tyler Larson -Tomasz Janczuk -Ilya Dmitrichenko -Simen Brekken -Guglielmo Ferri <44gatti@gmail.com> -Thomas Parslow -Ryan Emery -Jordan Sissel -Matt Robenolt -Jacob H.C. Kragh -Benjamin Pasero -Scott Anderson -Yoji SHIDARA -Mathias Bynens -Łukasz Walukiewicz -Artur Adib -E. Azer Koçulu -Paddy Byers -Roman Shtylman -Kyle Robinson Young -Tim Oxley -Eduard Burtescu -Ingmar Runge -Russ Bradberry -Andreas Madsen -Adam Malcontenti-Wilson -Avi Flax -Pedro Teixeira -Johan Bergström -James Hartig -Shannen Saez -Seong-Rak Choi -Dave Irvine -Ju-yeong Park -Phil Sung -Damon Oehlman -Mikael Bourges-Sevenier -Emerson Macedo -Ryunosuke SATO -Michael Bernstein -Guillermo Rauch -Dan Williams -Brandon Benvie -Nicolas LaCasse -Dan VerWeire -Matthew Fitzsimmons -Philip Tellis -Christopher Jeffrey -Seth Fitzsimmons -Einar Otto Stangvik -Paul Vorbach -Luke Gallagher -Tomasz Buchert -Myles Byrne -T.C. Hollingsworth -Cam Pedersen -Roly Fentanes -Ted Young -Joshua Holbrook -Blake Miner -Vincent Ollivier -Jimb Esser -Sambasiva Suda -Sadique Ali -Dmitry Nizovtsev -Alex Kocharin -Ming Liu -Shea Levy -Nao Iizuka -Christian Ress -Rod Vagg -Matt Ezell -Charlie McConnell -Farid Neshat -Johannes Wüller -Erik Lundin -Bryan Cantrill -Yosef Dinerstein -Nathan Friedly -Aaron Jacobs -Mustansir Golawala -Atsuo Fukaya -Domenic Denicola -Joshua S. Weinstein -Dane Springmeyer -Erik Dubbelboer -Malte-Thorben Bruns -Michael Thomas -Garen Torikian -EungJun Yi -Vincent Voyer -Takahiro ANDO -Brian Schroeder -J. Lee Coltrane -Javier Hernández -James Koval -Kevin Gadd -Ray Solomon -Kevin Bowman -Erwin van der Koogh -Matt Gollob -Simon Sturmer -Joel Brandt -Marc Harter -Nuno Job -Ben Kelly -Felix Böhm -George Shank -Gabriel de Perthuis -Vladimir Beloborodov -Tim Macfarlane -Jonas Westerlund -Dominic Tarr -Justin Plock -Timothy J Fontaine -Toshihiro Nakamura -Ivan Torres -Philipp Hagemeister -Mike Morearty -Pavel Lang -Peter Rybin -Joe Andaverde -Eugen Dueck -Gil Pedersen -Tyler Neylon -Josh Erickson -Golo Roden -Ron Korving -Brandon Wilson -Ian Babrou -Bearice Ren -Ankur Oberoi -Atsuya Takagi -Pooya Karimian -Frédéric Germain -Robin Lee -Kazuyuki Yamada -Adam Blackburn -Willi Eggeling -Paul Serby -Andrew Paprocki -Ricky Ng-Adam -Aaditya Bhatia -Max Ogden -Igor Soarez -Olivier Lalonde -Francois Marier -Trevor Norris -Kai Sasaki Lewuathe -Nicolas Chambrier -Tim Bradshaw -Johannes Ewald -Chris Dent -Dan Milon -Brandon Philips -Frederico Silva -Jan Wynholds -Girish Ramakrishnan -Anthony Pesch -Stephen Gallagher -Sergey Kholodilov -Tim Kuijsten -Michael Axiak -Chad Rhyner -Ben Taber -Luke Arduini -Luke Bayes -Nirk Niggler -James Hight -Mike Harsch -Alexandr Emelin -James Campos -Dave Olszewski -Tim Price -Jake Verbaten -Jacob Gable -Rick Yakubowski -Dan Kohn -Andy Burke -Sugendran Ganess -Jim Schubert -Victor Costan -Arianit Uka -Andrei Sedoi -Eugene Girshov -Evan Oxfeld -Lars-Magnus Skog -Raymond Feng -Aaron Cannon -Xidorn Quan -Paolo Fragomeni -Scott Blomquist -Henry Chin -Julian Gruber -JeongHoon Byun -Iskren Ivov Chernev -Alexey Kupershtokh -Benjamin Ruston -Manav Rathi -Marcin Kostrzewa -Suwon Chae -David Braun -Mitar Milutinovic -Michael Hart -Jeff Barczewski -Andrew Hart -Rafael Garcia -Tobias Müllerleile -Stanislav Ochotnicky -Ryan Graham -Kelly Gerber -Ryan Doenges -Sean Silva -Miroslav Bajtoš -Olof Johansson -Sam Roberts -Kevin Locke -Daniel Moore -Robert Kowalski -Benoit Vallée -Ryuichi Okumura -Brandon Frohs -Nick Sullivan -Nathan Zadoks -Rafael Henrique Moreira -Daniel G. Taylor -Kiyoshi Nomo -Veres Lajos -Yuan Chuan -Krzysztof Chrapka -Linus Mårtensson -Peter Rust -Shuan Wang -Wyatt Preul -David Björklund -Dav Glass -Andrew Chilton -Antony Bailey -Forrest L Norvell -Evan Solomon -Eran Hammer -Daniel Chatfield -Eivind Uggedal -Edward Hutchins -Chris Wren -Duan Yao -Matthias Bartelmeß -James Halliday -Matthew Aynalem -Vsevolod Strukchinsky -Jay Beavers -Eric Schrock -Jeff Switzer -Glen Mailer -Jason Gerfen -Patrik Stutz -Zarko Stankovic -Maxim Bogushevich -Phillip Alexander -Thom Seddon -Nick Simmons -Jacob Groundwater -Jackson Tian -fengmk2 -Tim Wood -Linus Unnebäck -Nikolai Vavilov -Michael Ridgway -Yazhong Liu -Gabriel Falkenberg -Kai Groner -Steven Kabbes -Gabriel Farrell -Nicolas Kaiser -Ahamed Nafeez -Cam Swords -Paul Loyd -Benjamin Waters -Lev Gimelfarb -Peter Flannery -Tuğrul Topuz -Lorenz Leutgeb -Brandon Cheng -Alexis Campailla -Yang Tianyang -Tom Gallacher -Jo Liss -Jun Ma -Jacob Hoffman-Andrews -Keith M Wesolowski -Maxime Quandalle -Doron Pagot -Oguz Bastemur -Kenan Sulayman -Christian Schulz -Pedro Ballesteros -Anton Khlynovskiy -Nicolas Talle -Austin Moran -Mike Pennisi -Maxwell Krohn -Saúl Ibarra Corretgé -Greg Brail -Shuhei Kagawa -Yuriy Nemtsov -Josh Dague -Goh Yisheng (Andrew) -William Bert -James Pickard -Andrew Low -Nick Apperson -C. Scott Ananian -Yuki KAN -Evan Carroll -goussardg -Geir Hauge -Farrin Reid -Denys Zariaiev -Sean McArthur -Rasmus Christian Pedersen -Greg Sabia Tucker -Calvin Metcalf -cjihrig -Chris Barber -Nick Apperson -Oguz Bastemur -Maurice Butler -Chris Dickinson -Julien Gilli -Jakob Gillich -James Halliday -Kevin Simper -Jackson Tian -Tristan Berger -Mathias Schreck -Steven R. Loomis -Matthew Fitzsimmons -Swaagie -Emmanuel Odeke -Eric Mill -Brendan Ashworth -Alejandro Oviedo -pkcs -Saúl Ibarra Corretgé -silverwind -Steven R. Loomis -James M Snell +AJ ONeal +Aaditya Bhatia +Aapo Laitinen +Aaron Cannon +Aaron Heckmann +Aaron Jacobs +Abe Fettig +Abimanyu Raja +Adam Blackburn +Adam Lippai +Adam Luikart +Adam Malcontenti-Wilson +Adam Wiggins +Adrian Lang +Ahamed Nafeez +Aku Kotkavuo +Alejandro Oviedo +Alex Kocharin +Alex Xu +Alexander Uvarov +Alexandr Emelin +Alexandre Marangone +Alexey Kupershtokh +Alexis Campailla +Alexis Sellier +Ali Farhadi +Anders Conbere +Andreas Madsen +Andreas Reich +Andrei Sedoi +Andrew Chilton +Andrew Hart +Andrew Johnston +Andrew Low +Andrew Naylor +Andrew Oppenlander +Andrew Paprocki +Andrew Teich +Andrius Bentkus +Andy Burke +Ankur Oberoi +Anthony Pesch +Anton Khlynovskiy +Antony Bailey +Antranig Basman +Aria Stewart +Arianit Uka +Arlo Breault +Arnout Kazemier +Artem Zaytsev +Artur Adib +Artur Cistov +Ashok Mudukutore +Atsuo Fukaya +Atsuya Takagi +Austin Moran +Avi Flax +Bearice Ren +Ben Burns +Ben Kelly +Ben Leslie +Ben Lowery +Ben Noordhuis +Ben Taber +Ben Weaver +Ben Williamson +Benjamin Fritsch +Benjamin Kramer +Benjamin Pasero +Benjamin Ruston +Benjamin Thomas +Benjamin Waters +Benoit Vallée +Bert Belder +Blaine Cook +Blake Miner +Blake Mizerany +Bradley Meck +Brandon Beacher +Brandon Benvie +Brandon Cheng +Brandon Frohs +Brandon Philips +Brandon Wilson +Brendan Ashworth +Brett Kiefer +Brian Hammond +Brian McKenna +Brian Schroeder +Brian White +Bryan Cantrill +C. Scott Ananian +CGavrila +Calvin Metcalf +Cam Pedersen +Cam Swords +Carlos Campderrós +Carson McDonald +Carter Allen +Chad Rhyner +Chandra Sekar S +Charles +Charles Lehner +Charlie McConnell +Cheng Zhao +Chew Choon Keat +Chris Barber +Chris Dent +Chris Dickinson +ChrisWren +Christian +Christian Ress +Christian Tellnes +Christopher Jeffrey +Christopher Lenz +Christopher Wright +Colin Ihrig +Colton Baker +Connor Dunn +Damon Oehlman +Dan Carney +Dan Kaplun +Dan Kohn +Dan Milon +Dan Søndergaard +Dan VerWeire +Dan Williams +Dane Springmeyer +Daniel Berger +Daniel Chatfield +Daniel Chcouri +Daniel Clifford +Daniel Ennis +Daniel G. Taylor +Daniel Gröber +Daniel Moore +Daniel Pihlström +Danny Coates +Dav Glass +Dave Irvine +Dave Olszewski +Dave Pacheco +David Björklund +David Braun +David Chan +David Siegel +David Sklar +David Trejo +Dean McNamee +Denys Zariaiev +Devin Torres +Devon Govett +Dmitriy Shalashov +Dmitry Baranovskiy +Dmitry Nizovtsev +Domenic Denicola +Dominic Tarr +Doron Pagot +Duan Yao +E. Azer Koçulu +Ed Morley +Ed Umansky +Eduard Burtescu +Edward Hutchins +Einar Otto Stangvik +Eivind Uggedal +Eli Skeggs +Elijah Insua +Elliott Cable +Emerson Macedo +Emmanuel Odeke +Eran Hammer +Eric Lovett +Eric Mill +Eric Schrock +Erik Corry +Erik Dubbelboer +Erik Lundin +Erwin van der Koogh +Euan +Eugen Dueck +Eugene Girshov +EungJun Yi +Evan Carroll +Evan Larkin +Evan Lucas +Evan Martin +Evan Oxfeld +Evan Rutledge Borden +Evan Solomon +Ezequiel Rabinovich +Farid Neshat +Farrin Reid +Fedor Indutny +Felix Böhm +Felix Geisendörfer +Feross Aboukhadijeh +Forrest L Norvell +Francois Marier +Fred K. Schott +Frederico Silva +Friedemann Altrock +Frédéric Germain +Fuji Goro +Gabriel Falkenberg +Gabriel Farrell +Gabriel Wicke +Gabriel de Perthuis +Garen Torikian +Geir Hauge +George Miroshnykov +George Shank +George Stagas +Gil Pedersen +Girish Ramakrishnan +Glen Low +Glen Mailer +Goh Yisheng (Andrew) +Golo Roden +Greg Brail +Greg Hughes +Greg Sabia Tucker +Guglielmo Ferri +Guilherme de Souza +Guillaume Goussard +Guillaume Tuton +Guillermo Rauch +Henry Chin +Henry Rawas +Herbert Vojčík +Herman Lee +Håvard Stranden +Ian Babrou +Igor Soarez +Igor Zinkovsky +Illarionov Oleg +Ilya Dmitrichenko +Ingmar Runge +Ionică Bizău +Isaac Burns +Isaac Z. Schlueter +Iskren Ivov Chernev +Ivan Torres +J. Lee Coltrane +Jacek Becela +Jackson Tian +Jacob Gable +Jacob Groundwater +Jacob H.C. Kragh +Jacob Hoffman-Andrews +Jake Verbaten +Jakob Gillich +Jakob Kummerow +Jakub Lekstan +James Campos +James Duncan +James Ferguson +James Halliday +James Hartig +James Herdman +James Hight +James Koval +James M Snell +James Pickard +Jan Kassens +Jan Krems +Jan Lehnardt +Jan Wynholds +Jann Horn +Jason Gerfen +Javier Hernández +Jay Beavers +Jeff Barczewski +Jeff Smick +Jeff Switzer +JeongHoon Byun +Jered Schmidt +Jeremy Ashkenas +Jeremy Martin +Jeremy Selier +Jeroen Janssen +Jerome Etienne +Jesús Leganés Combarro "piranna +Jicheng Li +Jim Schubert +Jimb Esser +Jo Liss +Jochen Eisinger +Joe Andaverde +Joe Shaw +Joe Walnes +Joel Brandt +Johan Bergström +Johan Dahlberg +Johan Euphrosine +Johan Sørensen +Johannes Ewald +Johannes Wüller +John Albietz +Johnny Ray +Jon Crosby +Jonas Pfenniger +Jonas Westerlund +Jonathan Johnson +Jonathan Knezek +Jonathan Reem +Jonathan Rentzsch +Jordan Sissel +Jorge Chamorro Bieling +Joseph Pecoraro +Josh Dague +Josh Erickson +Joshaven Potter +Joshua Holbrook +Joshua Peek +Joshua S. Weinstein +Ju-yeong Park +Juanjo +Julian Gruber +Julian Lamb +Julien Fontanet +Julien Gilli +Jun Ma +Justin Plock +Jérémy Lal +Jörn Horstmann +Kai Chen +Kai Groner +Kai Sasaki Lewuathe +Kang-Hao Kenny +Karl Guertin +Karl Skomski +Kazuyuki Yamada +Keith M Wesolowski +Kelly Gerber +Kenan Sulayman +Kevin Bowman +Kevin Decker +Kevin Gadd +Kevin Locke +Kevin Millikin +Kevin Simper +Kevin van Zonneveld +Kip Gebhardt +Kiyoshi Nomo +Koichi Kobayashi +Konstantin Käfer +Kris Kowal +Krishna Rajendran +Krzysztof Chrapka +Kyle Robinson Young +Lalit Kapoor +Lars-Magnus Skog +Lasse R.H. Nielsen +Lev Gimelfarb +Linus Mårtensson +Linus Unnebäck +Logan Smyth +Lorenz Leutgeb +Lucio M. Tato +Luis Reis +Luke Arduini +Luke Bayes +Luke Gallagher +MK Safi +Maciej Małecki +Majid Arif Siddiqui +Malte-Thorben Bruns +Manav Rathi +Marc Harter +Marcel Laverdet +Marcin Kostrzewa +Marco Rogers +Mariano Iglesias +Mark Cavage +Mark Hansen +Mark Nottingham +Mark Stosberg +Marshall Culpepper +Mathias Buus +Mathias Bynens +Mathias Pettersson +Mathias Schreck +Matt Brubeck +Matt Ezell +Matt Gollob +Matt Ranney +Matt Robenolt +Matthew Aynalem +Matthew Fitzsimmons +Matthias Bartelmeß +Maurice Butler +Max Ogden +Maxim Bogushevich +Maxime Quandalle +Maxwell Krohn +Michael Axiak +Michael Bernstein +Michael Carter +Michael Hart +Michael Jackson +Michael Kebe +Michael Ridgway +Michael Starzinger +Michael Stillwell +Michael Thomas +Michael Wilber +Michaeljohn Clement +Micheil Smith +Mickael van der Beek +Mickaël Delahaye +Mihai Călin Bazon +Mikael Bourges-Sevenier +Mike Harsch +Mike Morearty +Mike Pennisi +Mikeal Rogers +Ming Liu +Miroslav Bajtos +Miroslav Bajtoš +Mitar +Mustansir Golawala +Myles Byrne +Nao Iizuka +Nathan Friedly +Nathan Rajlich +Nathan Woltman +Nathan Zadoks +Nebu Pookins +Nicholas Kinsey +Nicholas Vavilov +Nick Apperson +Nick Campbell +Nick Desaulniers +Nick Muerdter +Nick Simmons +Nick Stenning +Nick Sullivan +Niclas Hoyer +Nicolas Chambrier +Nicolas Kaiser +Nicolas LaCasse +Nicolas Talle +Nikhil Marathe +Niklas Fiekas +Nirk Niggler +Nuno Job +Oguz Bastemur +Oleg Efimov +Oleg Slobodskoi +Olivier Lalonde +Olof Johansson +Onne Gorter +Orlando Vazquez +Paddy Byers +Paolo Fragomeni +Patrick Mooney +Patrik Stutz +Paul Loyd +Paul Querna +Paul Serby +Paul Vorbach +Paulo Matias +Pavel Lang +Pedro Ballesteros +Pedro Teixeira +Peter Bright +Peter Dekkers +Peter Griess +Peter Lyons +Peter Rust +Peter Rybin +Peteris Krumins +Phil Sung +Philip Tellis +Philipp Hagemeister +Phillip Alexander +Pierre-Alexandre St-Jean +Pooya Karimian +Rafael Garcia +Rafael Henrique Moreira +Raffaele Sena +Rasmus Andersson +Rasmus Christian Pedersen +Ray Morgan +Ray Solomon +Raymond Feng +Refael Ackermann +Reid Burke +Rhys Jones +Richard Rodger +Rick Olson +Rick Yakubowski +Ricky Ng-Adam +Rob Ellis +Robert Keizer +Robert Kowalski +Robert Mustacchi +Robin Lee +Rod Vagg +Rohini Harendra +Roly Fentanes +Roman Klauke +Roman Shtylman +Ron Korving +Rory Bradford +Ruben Rodriguez +Russ Bradberry +Russell Haering +Ryan Cole +Ryan Dahl +Ryan Doenges +Ryan Emery +Ryan Graham +Ryan McGrath +Ryan Petrello +Ryuichi Okumura +Ryunosuke SATO +Sadique Ali +Sam Hughes +Sam Roberts +Sam Shull +Sam Stephenson +Sambasiva Suda +Sami Samhuri +San-Tai Hsu +Saúl Ibarra Corretgé +Scott Anderson +Scott Blomquist +Scott González +Scott McWhirter +Scott Taylor +Sean Braithwaite +Sean Coates +Sean Cunningham +Sean McArthur +Sean Silva +Seong-Rak Choi +Sergey Kholodilov +Sergey Kryzhanovsky +Seth Fitzsimmons +Shannen Saez +Shea Levy +Shigeki Ohtsu +Shuan Wang +Shuhei Kagawa +Siddharth Mahendraker +Silas Sewell +Simen Brekken +Simon Cornelius P. Umacob +Simon Sturmer +Simon Willison +Stanislav Ochotnicky +Stanislav Opichal +Stefan Bühler +Stefan Rusu +Stephen Gallagher +Steve Engledow +Steve Mao +Steve Sharp +Steven Kabbes +Steven Loomis +Steven R. Loomis +Stiliyan Lazarov +Stéphan Kochen +Sugendran Ganess +Suwon Chae +Sven Panne +Swaagie +T.C. Hollingsworth +TJ Holowaychuk +Tadashi SAWADA +Takahiro ANDO +Taojie +Ted Young +Theo Schlossnagle +Thom Seddon +Thomas Lee +Thomas Parslow +Thomas Shinnick +Thorsten Lorenz +Tim Baumann +Tim Bradshaw +Tim Caswell +Tim Cooijmans +Tim Kuijsten +Tim Macfarlane +Tim Oxley +Tim Price +Tim Smart +Tim Wood +Timothy J Fontaine +Tobias Müllerleile +Tobie Langel +Tom Gallacher +Tom Hughes-Croucher +Tomasz Buchert +Tomasz Janczuk +Tony Huang +Tony Metzidis +Toon Verwaest +Toshihiro Nakamura +Travis Swicegood +Trent Mick +Trevor Burnham +Trevor Livingston +Trevor Norris +Tristan Berger +Tuğrul Topuz +Tyler Larson +Tyler Neylon +Urban Hafner +Veres Lajos +Vicente Jimenez Aguilar +Victor Costan +Victor Widell +Vincent Ollivier +Vincent Voyer +Vitali Lovich +Vitor Balocco +Vladimir Beloborodov +Vladimir Kurchatkin +Vsevolod Strukchinsky +Vyacheslav Egorov +Wade Simmons +Wang Xinyong +Willi Eggeling +William Bert +Wojciech Wnętrzak +Wyatt Preul +Xavi Magrinyà +Xavier Shay +Xidorn Quan +Yang Guo +Yazhong Liu +Yiyu He +Yoji SHIDARA +Yorkie +Yosef Dinerstein +Yoshihiro KIKUCHI +Yuan Chuan +Yuichiro MASUI +Yuki KAN +Yunsong Guo +Yuriy Nemtsov +Zachary Scott +Zarko Stankovic +Zoran Tomicic +ayanamist +fengmk2 +haoxin +pflannery +pkcs +silverwind +sudodoki +Łukasz Walukiewicz diff --git a/tools/common.js b/tools/common.js new file mode 100644 index 0000000000..c4fccfef9b --- /dev/null +++ b/tools/common.js @@ -0,0 +1,149 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var assert = require('assert'); + +/* + * stableSort sorts the array "array" using the predicate "compare" in a + * stable way. + * It returns a new object that represents the sorted array. + */ +function stableSort(array, compare) { + assert(Array.isArray(array), 'array must be an array'); + + if (!compare) { + compare = defaultCompare; + } + assert(typeof compare === 'function', 'compare must be a function'); + + var indexedArray = array.map(function addIndex(item, index) { + return { v: item, i: index }; + }); + + function defaultCompare(a, b) { + if (a < b) return -1; + if (a > b) return 1; + return 0; + } + + indexedArray.sort(function stableCompare(a, b) { + var r = compare(a.v, b.v); + if (r === 0) { + return a.i - b.i; + } else { + return r; + } + }); + + return indexedArray.map(function removeIndex(item) { + return item.v; + }); +} + +exports.stableSort = stableSort; + +if (module === require.main) { + /* + * The following code is a tests suite that makes sure that: + * 1) The default sort implementation of the Node.js JavaScript runtime (V8) + * is not stable. + * 2) The "stableSort" function above provides a stable sort. + */ + function standardSort(array, compare) { + var dupArray = array.splice(0); + dupArray.sort(compare); + return dupArray; + } + + function testSortStability(count, bins, sortFunc) { + var unstable = false; + + for (var iter = 0; iter < 10; ++iter) { + var array = []; + + for (var i = 0; i < count; ++i) + array.push({ u: Math.floor(Math.random() * bins), i: i }); + + array = sortFunc(array, function(a, b) { return a.u - b.u }); + var u = -1, i = -1; + for (var ii = 0; ii < count; ++ii) { + var v = array[ii]; + if (v.u > u) { + u = v.u; i = -1; + } else if (v.i > i) { + i = v.i; + } else { + return false; + } + } + } + + return true; + } + + var stableSortMsg = "Stable sort should be stable for all arrays"; + var standardSmallArrayMsg = "Standard sort should be stable for small arrays"; + var standardUnstableMsg = "Standard sort should NOT be stable for non-small arrays"; + + var stableSorts = [ + { count: 5, bins: 2, sort: standardSort, msg: standardSmallArrayMsg }, + { count: 10, bins: 3, sort: standardSort, msg: standardSmallArrayMsg }, + { count: 5, bins: 2, sort: stableSort, msg: stableSortMsg }, + { count: 10, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 11, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 12, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 13, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 14, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 15, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 20, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 50, bins: 3, sort: stableSort, msg: stableSortMsg }, + { count: 100, bins: 4, sort: stableSort, msg: stableSortMsg }, + { count: 1000, bins: 4, sort: stableSort, msg: stableSortMsg }, + { count: 10000, bins: 4, sort: stableSort, msg: stableSortMsg }, + ]; + + var unstableSorts = [ + { count: 11, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 12, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 13, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 14, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 15, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 20, bins: 3, sort: standardSort, msg: standardUnstableMsg }, + { count: 50, bins: 4, sort: standardSort, msg: standardUnstableMsg }, + { count: 100, bins: 4, sort: standardSort, msg: standardUnstableMsg }, + { count: 1000, bins: 4, sort: standardSort, msg: standardUnstableMsg }, + { count: 10000, bins: 4, sort: standardSort, msg: standardUnstableMsg }, + ]; + + + function runTests(tests, stability) { + tests.forEach(function(test) { + console.log('Running test with sort: %s, count: %s, bins: %s', + test.sort.name, test.count, test.bins); + assert.equal(testSortStability(test.count, test.bins, test.sort), + stability, + test.msg); + }); + } + + runTests(stableSorts, true); + runTests(unstableSorts, false); +} diff --git a/tools/update-authors.js b/tools/update-authors.js new file mode 100644 index 0000000000..f2cd38352e --- /dev/null +++ b/tools/update-authors.js @@ -0,0 +1,144 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +/* + * This script updates the AUTHORS so that it contains a list of contributors' + * names ordered alphabetically. The sorting algorithm used is stable, see + * function "stableSort" in tools/common.js. + */ + +'use strict'; + +var child_process = require('child_process'); +var fs = require('fs'); +var assert = require('assert'); +var util = require('util'); +var path = require('path'); +var os = require('os'); + +var debug = util.debuglog('update-authors'); + +var commonTools = require(path.join(__dirname, './common.js')); + +// Use '%aN <%aE>' and not '%an <%ae>' as we want to have git log use the +// .mailmap file. +var GIT_LOG_COMMAND_ARGS = ['log', "--format='%aN <%aE>'"]; +var MAILMAP_FILE = '.mailmap'; + +var OPTS = processCmdLineArgs(); +var AUTHORS_FILE = OPTS.authorsFile || 'AUTHORS'; + +var PLATFORM_AGNOSTIC_EOL = /\r|\n|\r\n/; + +var authorsMap = {}; + +function usage() { + console.log('Usage: [NODE_DEBUG=update-authors] ./node update-authors.js ' + + ' [-a AUTHORS-FILE]'); + process.exit(1); +} + +function processCmdLineArgs() { + var cmdLineOpts = {}; + + var cmdLineArgs = process.argv.splice(2); + for (var i = 0; i < cmdLineArgs.length; ++i) { + if (cmdLineArgs[i] === '-a') { + if (!cmdLineArgs[++i]) { + usage(); + } else { + cmdLineOpts.authorsFile = cmdLineArgs[i]; + } + } else { + usage(); + } + } + + return cmdLineOpts; +} + +function generateAuthorsFile(authorsFilePath, cb) { + assert(typeof authorsFilePath === 'string', + 'authorsFilePath must be a string'); + + var sortedAuthorsNames = commonTools.stableSort(Object.keys(authorsMap)); + var authorsFileContent = sortedAuthorsNames.join('\n') + '\n'; + fs.writeFile(authorsFilePath, authorsFileContent, cb); +} + +var latestAuthorsLineChunk = ''; +function addAuthors(authors) { + assert(typeof authors === 'string', 'authors must be a string'); + + var authors = (latestAuthorsLineChunk + authors).split(PLATFORM_AGNOSTIC_EOL); + latestAuthorsLineChunk = ''; + authors.forEach(function eachAuthor(author) { + if (author && author.length > 0) { + var matches = author.match(/^'([^<>]*)\s+<.*>'$/); + + if (matches) { + var authorName = matches[1]; + debug('MATCHING: ' + authorName); + authorsMap[authorName] = 1; + } else { + debug('NOT MATCHING: ' + author); + latestAuthorsLineChunk = author; + } + } + }); +} + +function loadAuthorsFromGitLog(cb) { + var gitLog = child_process.spawn('git', GIT_LOG_COMMAND_ARGS); + + gitLog.on('close', function onGitLogClose(exitCode, signal) { + if (exitCode === 0 && signal === null) { + + debug('NB AUTHORS:' + Object.keys(authorsMap).length); + + generateAuthorsFile(AUTHORS_FILE, function onAuthorsFileGenerated(err) { + if (err) { + return cb(new Error('Error when generating authors file:', err)); + } else { + console.log('Authors file generated successfully!'); + } + }); + } + }); + + gitLog.on('error', function onGitLogError(err) { + var errorMsg = util.format('Error when executing command %s: %s', + GIT_LOG_COMMAND, err); + return cb(new Error(errorMsg)); + }); + + gitLog.stdout.on('data', function onGitLogData(data) { + addAuthors(data.toString()); + }); +} + +loadAuthorsFromGitLog(function done(err) { + if (err) { + console.error('Error when updating authors file:', err); + } else { + console.log('Updated authors file successfully!'); + } +}); diff --git a/tools/updateAuthors.awk b/tools/updateAuthors.awk deleted file mode 100644 index 4ede6ffcea..0000000000 --- a/tools/updateAuthors.awk +++ /dev/null @@ -1,13 +0,0 @@ -# git log --pretty='format:%ae %an' | tac | awk -f tools/updateAuthors.awk -{ - if (!x[$1]++) { - #print $0 - n = split($0, a, " "); - s = a[2]; - for (i = 3; i <= n ; i++) { - s = s " " a[i]; - } - print s " <" $1 ">"; - } -} -