docs: cleanup contributors (#28930)

- remove individuals from @angular/* package.json, we don't keep them up-to-date
- switch keys in contributors.json to GitHub handles, seems like a better identifier and lets us grab avatar images from GitHub account
- move emeritus ppl to a new Alumni group (won't yet appear on the site)
- add "lead/mentor" keys so we know who is coordinating work
- add a script that generates an "org chart" graphic

PR Close #28930
This commit is contained in:
Alex Eagle 2019-02-22 11:16:21 -08:00 committed by Kara Erickson
parent 0bd4261f23
commit 887faffa25
12 changed files with 194 additions and 133 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,34 @@
# Contributors page
We have an official accounting of who is on the Angular Team, who are "trusted collaborators" (see team.angular.io/collaborators), and so on.
The contributors.json should be maintained to keep our "org chart" in a single consistent place.
## GDE listings
There are two pages:
https://developers.google.com/experts/all/technology/angular
(Googlers: source at http://google3/googledata/devsite/content/en/experts/all/technology/angular.html)
which is maintained by Dawid Ostrowski based on a spreadsheet
https://docs.google.com/spreadsheets/d/1_Ls2Kle7NxPBIG8f3OEVZ4gJZ8OCTtBxGYwMPb1TUVE/edit#gid=0
and ours: https://angular.io/about?group=GDE which is derived from contributors.json.
Alex Eagle is investigating how to reconcile these two lists.
## Checking the keys
Keys in contributors.json should be GitHub handles. (Most currently are, but not all)
This will allow us to use GitHub as the default source for things like Name, Avatar, etc.
## Processing the data
Install https://stedolan.github.io/jq/ which is amazing.
```sh
for handle in $(jq keys[] --raw-output < aio/content/marketing/contributors.json)
do echo -e "\n$handle\n---------\n"; curl --silent -H "Authorization: token ${TOKEN}" https://api.github.com/users/$handle \
| jq ".message,.name,.company,.blog,.bio" --raw-output
done
```

View File

@ -1,4 +1,4 @@
<h1 class="title center no-toc">Angular Contributors</h1>
<h1 class="title center no-toc">Angular Collaborators</h1>
<h2>Building For the Future</h2>
<p>Angular is built by a team of engineers who share a passion for
making web development feel effortless. We believe that writing

View File

@ -1,29 +1,23 @@
{
"misko": {
"mhevery": {
"name": "Miško Hevery",
"picture": "misko.jpg",
"twitter": "mhevery",
"website": "http://misko.hevery.com",
"bio": "Miško Hevery is the creator of AngularJS framework. He has passion for making complex things simple. He currently works at Google, but has previously worked at Adobe, Sun Microsystems, Intel, and Xerox, where he became an expert in building web applications in web related technologies such as Java, JavaScript, Flex and ActionScript.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"igor": {
"igorminar": {
"name": "Igor Minar",
"picture": "igor-minar.jpg",
"twitter": "IgorMinar",
"website": "https://google.com/+IgorMinar",
"bio": "Igor is a software engineer at Google. He is a lead on the Angular project, practitioner of test driven development, open source enthusiast, hacker. In his free time, Igor enjoys spending time with his wife and two kids, doing outdoor activities (including but not limited to sports, gardening and building retaining walls).",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"naomi": {
"name": "Naomi Black",
"picture": "naomi.jpg",
"twitter": "naomitraveller",
"website": "http://google.com/+NaomiBlack",
"bio": "Naomi is Angular's TPM generalist and jack-of-all-trades. She supports Angular's internal Google users and solves hard-to-define problems. She's been at Google since 2006, as a technical program manager on projects ranging from Accessibility to Google Transit. She fights daleks in her spare time.",
"group": "Angular"
},
"brad": {
"bradlygreen": {
"name": "Brad Green",
"picture": "brad-green.jpg",
"twitter": "bradlygreen",
@ -31,29 +25,23 @@
"bio": "Brad Green works at Google as an engineering director. Brad manages the Google Sales Platform suite of projects as well as the AngularJS framework. Prior to Google, Brad worked on the early mobile web at AvantGo, founded and sold startups, and spent a few hard years toiling as a caterer. Brad's first job out of school was as lackey to Steve Jobs at NeXT Computer writing demo software and designing his slide presentations. Brad enjoys throwing dinner parties with his wife Heather and putting on plays with his children.",
"group": "Angular"
},
"juleskremer": {
"name": "Jules Kremer",
"picture": "juleskremer.jpg",
"twitter": "jules_kremer",
"website": "https://plus.google.com/+JulesKremer",
"bio": "Jules is Head of Angular Developer Relations at Google. When not working with developers, Jules is often bending into pretzel-like shapes, creating paths through thick jungle with a machete or drinking really awesome beer.",
"group": "Angular"
},
"jelbourn": {
"name": "Jeremy Elbourn",
"picture": "jelbourn.jpg",
"twitter": "jelbourn",
"website": "https://plus.google.com/+JeremyElbourn/",
"bio": "Angular Material Team Lead. FE Engineer @ Google specializing in AngularJS, component design, and the cleanest of code.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"pete": {
"petebacondarwin": {
"name": "Pete Bacon Darwin",
"picture": "pete.jpg",
"twitter": "petebd",
"website": "http://www.bacondarwin.com",
"bio": "AngularJS for JS Team Lead. Pete has been working on the core team since 2012 and became the team lead for the AngularJS for JS branch in November 2014. He has co-authored a book on AngularJS and regularly talks about and teaches Angular.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"stephenfluin": {
"name": "Stephen Fluin",
@ -61,7 +49,8 @@
"twitter": "stephenfluin",
"website": "https://plus.google.com/+stephenfluin",
"bio": "Stephen is a Developer Advocate working on the Angular team. Before joining Google, he was a Google Expert. Stephen loves to help enterprises use technology more effectively.",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"robwormald": {
"name": "Rob Wormald",
@ -69,23 +58,17 @@
"twitter": "robwormald",
"website": "http://github.com/robwormald",
"bio": "Rob is a Developer Advocate on the Angular team at Google. He's the Angular team's resident reactive programming geek and founded the Reactive Extensions for Angular project, ngrx.",
"group": "Angular"
"group": "Angular",
"lead": "stephenfluin"
},
"tobias": {
"name": "Tobias Bosch",
"picture": "tobias.jpg",
"twitter": "tbosch1009",
"website": "https://plus.google.com/+TobiasBosch",
"bio": "Tobias Bosch is a software engineer at Google. He is part of the Angular core team and works on Angular.",
"group": "Angular"
},
"rado": {
"rkirov": {
"name": "Rado Kirov",
"picture": "rado.jpg",
"twitter": "radokirov",
"website": "https://plus.sandbox.google.com/+RadoslavKirov",
"bio": "Rado has been on the Angular Core team since Summer 2014. Before Angular, he worked on the Adsense serving stack, responsible for serving billions of ads daily. Being passionate about open source, he made contributions to Angular as a Google-20% project, before making the fulltime jump. He is a recovering academic; ask him about error-correcting codes from algebraic curves (or don't).",
"group": "Angular"
"group": "Angular",
"lead": "mprobst"
},
"alexeagle": {
"name": "Alex Eagle",
@ -93,39 +76,61 @@
"twitter": "jakeherringbone",
"website": "http://google.com/+alexeagle",
"bio": "Alex works on language tooling for JavaScript and TypeScript. Previously Alex spent five years in Google's developer testing tools. He has developed systems including Google's continuous integration service, capturing build&test failures, and explaining them to developers. Before Google, Alex worked at startups including Opower, and consulted for large government IT. In his 20% time, he created the Error-Prone static analysis tool, which detects common Java programming mistakes and reports them as compile errors.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"martinprobst": {
"kyliau": {
"name": "Keen Yee Liau",
"group": "Angular",
"lead": "alexeagle",
"picture": "kyliau.jpg"
},
"clydin": {
"name": "Charles Lyding",
"group": "Angular",
"lead": "alexeagle",
"picture": "clydin.jpg"
},
"alan-agius4": {
"name": "Alan Agius",
"group": "Angular",
"lead": "alexeagle",
"picture": "alan-agius4.jpg",
"bio": "Angular CLI Member, Loves TypeScript, Build Tools, Food, Beer & Coffee :)"
},
"gregmagolan": {
"name": "Greg Magolan",
"group": "Angular",
"lead": "alexeagle",
"picture": "gregmagolan.jpg",
"bio": "Building great software with Angular and Node.js."
},
"mprobst": {
"name": "Martin Probst",
"picture": "martin-probst.jpg",
"twitter": "martin_probst",
"website": "http://probst.io",
"bio": "Martin is a software engineer at Google in the AngularJS team. He holds a MSc in Software Engineering from HPI in Potsdam, Germany. Before joining the AngularJS team at Google, he worked at a database startup in the Netherlands, at EMC, at SAP, and as a freelancer. In his free time, he likes to cook and sail, not necessarily at the same time.",
"group": "Angular"
"group": "Angular",
"lead": "bradlygreen"
},
"julieralph": {
"name": "Julie Ralph",
"picture": "julie-ralph.jpg",
"twitter": "SomeJulie",
"website": "https://plus.google.com/+JulieRalph",
"bio": "Julie Ralph works as a Software Engineer in Test at Google in Seattle and is the lead developer on the Angular end-to-end testing framework Protractor.",
"group": "Angular"
},
"alexrickabaugh": {
"alxhub": {
"name": "Alex Rickabaugh",
"picture": "alex-rickabaugh.jpg",
"twitter": "synalx",
"website": "https://plus.google.com/+AlexRickabaugh/about",
"bio": "Core team member working to optimize the Angular platform for the next generation of applications, including mobile. Before joining the Angular team, Alex worked in the Google sales organization where he helped build the first large Angular application within Google.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"matias": {
"matsko": {
"name": "Matias Niemela",
"picture": "matias.jpg",
"twitter": "yearofmoo",
"website": "http://yearofmoo.com",
"bio": "Matias Niemela is a fullstack web developer who has been programming & building websites for over 10 years, and a core team member of AngularJS for two years. In the spring of 2015 Matias joined Angular full time at Google. In his free time Matias loves to build complex things and is always up for public speaking, travelling and tweaking his current Vim setup.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"hansl": {
"name": "Hans Larsen",
@ -133,7 +138,8 @@
"twitter": "hanslatwork",
"website": "http://www.codingatwork.com/",
"bio": "Hans is a software engineer at Google on the Angular team and was previously at Slack. He works everyday to help make it easier for everyone to create beautiful, consistent web applications using Angular, using Material Design components and the CLI tool.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"kara": {
"name": "Kara Erickson",
@ -141,52 +147,40 @@
"twitter": "karaforthewin",
"website": "https://github.com/kara",
"bio": "Kara is a software engineer on the Angular team at Google and a co-organizer of the Angular-SF Meetup. Prior to Google, she helped build UI components in Angular for guest management systems at OpenTable. She enjoys snacking indiscriminately and probably other things too.",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"chuckj": {
"name": "Chuck Jazdzewski",
"picture": "chuckj.jpg",
"twitter": "chuckjaz",
"website": "http://removingalldoubt.com",
"bio": "Chuck is a Software Engineer on the Angular team at Google. He is a programming language geek, UI framework and component library veteran, and has a passion for simplifying the task of programming. Before Google, he worked at Microsoft and Borland.",
"group": "Angular"
},
"vikram": {
"vikerman": {
"name": "Vikram Subramanian",
"picture": "vikram.jpg",
"twitter": "vikerman",
"bio": "Vikram is a Software Engineer on the Angular team focused on Engineering Productivity. That means he makes sure people on the team can move fast and not break things. Vikram enjoys doing Yoga and going on walks with his daughter.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"maxsills": {
"name": "Max Sills",
"picture": "max-sills.jpg",
"twitter": "angularjs",
"website": "http://google-opensource.blogspot.com/",
"bio": "Max Sills is Angular's Open Source lawyer.",
"group": "Angular"
},
"pawel": {
"pkozlowski-opensource": {
"name": "Pawel Kozlowski",
"picture": "pawel.jpg",
"twitter": "pkozlowski_os",
"bio": "Open source hacker, AngularJS book author, AngularUI lead developer. Pawel is an software-development addict who believes in free, open source software. He is a core contributor to the AngularJS framework, AngularUI, Karma-runner and several other projects. He is the co-author of the \"Mastering Web Application Development with AngularJS\" book. When not coding, Pawel can be spotted speaking at various software development conferences.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"paulgschwendtner": {
"devversion": {
"name": "Paul Gschwendtner",
"picture": "devversion.jpg",
"twitter": "DevVersion",
"website": "https://github.com/DevVersion",
"bio": "Paul is a 17-year-old developer living in Germany. While he attends school, Paul works as a core team member on Angular Material. Paul focuses on tooling and building components for Angular.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"elad": {
"EladBezalel": {
"name": "Elad Bezalel",
"picture": "eladbezalel.jpg",
"website": "https://github.com/EladBezalel",
"bio": "Elad is a fullstack developer with a very strong love for design. Since 8 years old, he's been designing in Photoshop and later on fell in love with programing. This strong bond between design and computer programming gave birth to a new kind of love. And he is currently doing the combination of both, as a core member of the ngMaterial project.",
"group": "Angular"
"group": "GDE"
},
"marclaval": {
"name": "Marc Laval",
@ -194,7 +188,8 @@
"twitter": "marclaval",
"website": "https://github.com/mlaval",
"bio": "Marc is a manager at Amadeus where he leads the team in charge of developing and recommending UI frameworks for the company. He is also an open source developer and a contributor to Angular.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"wardbell": {
"name": "Ward Bell",
@ -202,14 +197,15 @@
"website": "https://github.com/wardbell",
"twitter": "wardbell",
"bio": "Ward is an all-around developer with JavaScript, Node.js®, and .net chops. He's a frequent conference speaker and podcaster, trainer, Google Developer Expert for Angular, Microsoft MVP, and PluralSight author. He is also president of IdeaBlade, an enterprise software consulting firm and the makers of breeze.js. He would like to get more sleep and spend more time in the mountains.",
"group": "Angular"
"group": "GDE"
},
"martinstaffa": {
"Narretz": {
"name": "Martin Staffa",
"picture": "martinstaffa.jpg",
"twitter": "Narretz",
"bio": "Martin is an English major turned web developer who loves frontend stuff. He's been part of the AngularJS team since 2014. If you can't find him roaming the Github issue queues, he's probably out with his camera somewhere.",
"group": "Angular"
"group": "Angular",
"lead": "petebacondarwin"
},
"filipesilva": {
"name": "Filipe Silva",
@ -217,29 +213,24 @@
"twitter": "filipematossilv",
"website": "http://github.com/filipesilva",
"bio": "Filipe is a passion-driven developer that always strives for the most elegant solution for each problem. He is currently an author for Angular.io, a core contributor for Angular-CLI and senior front end engineer at KonnectAgain. When not busy going through PRs, you can find him scouring reddit for new dinner recipes to cook or enjoying a craft beer in Dublin.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"andrewseguin": {
"name": "Andrew Seguin",
"picture": "andrewseguin.jpg",
"website": "http://github.com/andrewseguin",
"bio": "Andrew is an engineer on the Angular Material team working on bringing material components to the world. When hes not obsessing over pixels and design, he is probably off somewhere having adventures with his wife and daughters.",
"group": "Angular"
},
"jesusrodriguez": {
"name": "Jesús Rodríguez",
"picture": "jesus-rodriguez.jpg",
"twitter": "foxandxss",
"website": "http://angular-tips.com",
"bio": "Jesus is an open source lover, a book author and editor, and AngularUI lead developer. He is currently a core contributor to the UI Bootstrap project.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"crisbeto": {
"name": "Kristiyan Kostadinov",
"picture": "crisbeto.jpg",
"website": "http://crisbeto.com/",
"bio": "Kristiyan is a front-end developer, passionate open-source contributor and a core team member on Angular Material.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"gkalpak": {
"name": "Georgios Kalpakas",
@ -247,19 +238,22 @@
"twitter": "gkalpakas",
"website": "https://github.com/gkalpak",
"bio": "George is a Software Engineer with a passion for chess, robotics and automating stuff. He has a strong need to know how things work (so if you already know, he'd love to have a talk with you). He has been a member of the AngularJS team since 2014. When not doing geeky stuff, he is probably trying to convince his wife and kids to apply programming principles in real life. (Or is it the other way around?)",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"mmalerba": {
"name": "Miles Malerba",
"picture": "mmalerba.jpg",
"bio": "Miles is a software engineer on the Angular Material team at Google. In addition to Javascripting he enjoys eating food and ogling cute puppies.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"jasonaden": {
"name": "Jason Aden",
"picture": "jasonaden.jpg",
"bio": "Jason is a software engineer at Google on the Angular Core team. He is enthusiastic about Angular and application development in the modern age. In his free time Jason enjoys spending time with his wife and four children and doing outdoor activities (hiking, fishing, snowboarding, etc.).",
"group": "Angular"
"group": "Angular",
"lead": "igorminar"
},
"jeffwhelpley": {
"name": "Jeff Whelpley",
@ -299,13 +293,14 @@
"bio": "Ralph(Zhicheng Wang) is a senior consultant at ThoughtWorks and also a GDE. He is a technology enthusiast and he is a passionate advocate of 'Simplicity, Professionalism and Sharing'. In his eighteen years of R&D career, he worked as tester, R&D engineer, project manager, product manager and CTO. He is immersed in the excitement of the arrival of the baby.",
"group": "GDE"
},
"wassim": {
"manekinekko": {
"name": "Wassim Chegham",
"picture": "wassim.jpg",
"twitter": "manekinekko",
"website": "https://medium.com/@wassimchegham",
"bio": "Wassim (aka manekinekko on Twitter/Github) is a Developer Advocate at SFEIR, in Web technologies (Angular, Polymer, PWA, Web Components...). He is also a Developer Expert in Web technologies nominated by Google. He enjoys writing technical articles, meeting developers at events, speaking at conferences and contributing to open source projects. Wassim loves the Web Platform and works hard to move it forward.",
"group": "GDE"
"group": "Angular",
"mentor": "filipesilva"
},
"chrisnoring": {
"name": "Christoffer Noring",
@ -337,14 +332,8 @@
"twitter": "splaktar",
"website": "https://www.DevIntent.com",
"bio": "Lead for AngularJS Material. Owner and consultant at DevIntent. Ex-Angular GDE. Founder of the Google Developers Group (GDG) community on the Space Coast of Florida, USA.",
"group": "Angular"
},
"mikebrocchi": {
"name": "Mike Brocchi",
"picture": "mike-brocchi.jpg",
"twitter": "brocco",
"bio": "Mike is a core team member of the Angular CLI team, a GDE and is also an instructor at egghead. Mike is passionate about helping others by writing code as well as teaching.",
"group": "Angular"
"group": "Angular",
"lead": "jelbourn"
},
"manfredsteyer": {
"name": "Manfred Steyer",
@ -370,15 +359,16 @@
"bio": "Based in Austin Texas, Jeremy is an application architect and homebrewer. He is a Google Developer Expert in Web Technologies and Angular, with a focus on speaking and training and author of Angular in Action and Ionic in Action.",
"group": "GDE"
},
"minko": {
"mgechev": {
"name": "Minko Gechev",
"picture": "minko.jpg",
"twitter": "mgechev",
"website": "http://blog.mgechev.com",
"bio": "Software engineer who enjoys theoretical computer science and its practical applications. Speaker, author of the book 'Switching to Angular', codelyzer, Guess.js, and the Go linter revive. Working for faster and more reliable software.",
"group": "Angular"
"group": "Angular",
"lead": "alexeagle"
},
"uri": {
"urish": {
"name": "Uri Shaked",
"picture": "urish.jpg",
"twitter": "UriShaked",
@ -415,7 +405,8 @@
"picture": "ocombe.jpg",
"twitter": "ocombe",
"bio": "Olivier is a passionate front-end engineer who loves interacting with the community by doing open source projects (ocLazyLoad, ngx-translate…), being a panelist at Angular-Air, giving talks or just chatting on Twitter and Slack. Hes a member of the Angular Core team and works on i18n.",
"group": "Angular"
"group": "Angular",
"lead": "kara"
},
"cironunes": {
"name": "Ciro Nunes",
@ -446,7 +437,7 @@
"bio": "Co-founder and CTO of Thinktecture AG, as well as Google GDE and Microsoft MVP. Since two decades active as an engaged and passionate speaker on several software conferences and events all over the world. Some people call him 'Mr. Cross-Platform'.",
"group": "GDE"
},
"shaireznik": {
"shairez": {
"name": "Shai Reznik",
"picture": "shaireznik.jpg",
"twitter": "shai_reznik",
@ -486,7 +477,7 @@
"bio": "GDE (Google Developer Expert) Angular and Web Technologies, Women Who Code KL Director, Jecelyn specializes in professional application development with technologies, including Angular, HTML5, Typescript, JavaScript, CSS, C#, NodeJs, Cloud and ASP.NET.",
"group": "GDE"
},
"vincirufus": {
"areai51": {
"name": "Vinci Rufus",
"picture": "vincirufus.jpg",
"twitter": "areai51",
@ -494,7 +485,7 @@
"bio": "Director of Experience Technology at SapientRazorfish. Consults various brands on their frontend and mobile web architecture. A speaker at various forums and mentor at Launchpad Accelerator and ngGirls India. Spends free time playing with Angular, Preact, web-components ",
"group": "GDE"
},
"thierrychatel": {
"tchatel": {
"name": "Thierry Chatel",
"picture": "thierrychatel.jpg",
"twitter": "ThierryChatel",
@ -510,14 +501,6 @@
"bio": "Gerard is very excited about the future of the Web and JavaScript. Always happy Computer Science Engineer and humble Google Developer Expert. He loves to share his learnings by giving talks, trainings and writing about cool technologies. He loves running AngularZone and GraphQL London, mentoring students and giving back to the community.",
"group": "GDE"
},
"amcdnl": {
"name": "Austin McDaniel",
"picture": "amcdnl.jpeg",
"twitter": "amcdnl",
"website": "https://amcdnl.com",
"bio": "Austin is an software architect with a passion for JavaScript and Angular. Austin loves to share his experiences with other like-minded developers by giving talks, blogging, podcasting and open-sourcing.",
"group": "Angular"
},
"nirkaufman": {
"name": "Nir Kaufman",
"picture": "nirkaufman.jpg",
@ -579,7 +562,8 @@
"picture": "elanaolson.jpg",
"twitter": "elanathellama",
"bio": "Elana is a Developer Relations intern on the Angular team at Google. She is working on migration paths from AngularJS to Angular and would love to chat about your experience with upgrading.",
"group": "Angular"
"group": "Angular",
"lead": "stephenfluin"
},
"kevinyang": {
"name": "Kevin Yang",

View File

@ -0,0 +1,7 @@
#!/usr/bin/env bash
(
cd $(dirname $0)
echo "digraph {"
jq -f org_chart.jq --raw-output < ../../content/marketing/contributors.json
echo "}"
) | dot -Tpng > org.png

View File

@ -0,0 +1,11 @@
# Produces a GraphViz Dot file from the data in the contributors.json file.
# Documentation for this syntax at https://stedolan.github.io/jq/manual
to_entries
| map(select(.value.group=="Angular" or .value.group=="Collaborator"))
| map(.value |= {name: .name, lead: (.lead // .mentor // "")})
| map(
"\(.key|tojson) [ label = \(.value.name|tojson) ] ",
"\(.key|tojson) -> \(.value.lead|tojson)"
)
[]

View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
#
# Reads the contributors.json file and tries to fill in missing data from other sources.
readonly MISSING_PICTURE_QUERY='with_entries(select(.value | has("picture") | not)) | keys[]'
readonly MISSING_BIO_QUERY='with_entries(select(.value | has("bio") | not)) | keys[]'
(
cd $(dirname $0)/../../content/marketing
for handle in $(jq "$MISSING_PICTURE_QUERY" --raw-output < contributors.json); do
avatar_url=$(curl --silent -H "Authorization: token ${TOKEN}" https://api.github.com/users/$handle \
| jq ".avatar_url" --raw-output)
echo "Missing picture for $handle, downloading it from $avatar_url"
curl -o ../images/bios/$handle.jpg $avatar_url
newjson=$(mktemp)
jq ".\"$handle\".picture |= \"$handle.jpg\"" < contributors.json > $newjson
mv $newjson contributors.json
done
for handle in $(jq "$MISSING_BIO_QUERY" --raw-output < contributors.json); do
bio=$(curl --silent -H "Authorization: token ${TOKEN}" https://api.github.com/users/$handle \
| jq ".bio|tojson" --raw-output)
if [[ "$bio" != "null" ]]; then
echo "Missing bio for $handle, using \"$bio\""
newjson=$(mktemp)
jq ".\"$handle\".bio |= \"$bio\"" < contributors.json > $newjson
mv $newjson contributors.json
fi
done
)

View File

@ -21,9 +21,6 @@
"angular",
"benchmarks"
],
"contributors": [
"Tobias Bosch <tbosch@google.com> (https://angular.io/)"
],
"license": "MIT",
"bugs": {
"url": "https://github.com/angular/angular/issues"

View File

@ -37,10 +37,6 @@
"angular",
"compiler"
],
"contributors": [
"Tobias Bosch <tbosch@google.com> (https://angular.io/)",
"Alex Eagle <alexeagle@google.com> (https://angular.io/)"
],
"license": "MIT",
"bugs": {
"url": "https://github.com/angular/angular/issues"