From 060cd2832bb44090480049045162cd3cb89dc1c0 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Mon, 26 Nov 2018 15:18:10 +0100 Subject: import some mailing lists --- Cargo.lock | 95 ++++++++ Cargo.toml | 1 + mailmap.toml | 510 ------------------------------------------- people/BurntSushi.toml | 1 + people/Centril.toml | 1 + people/Havvy.toml | 1 + people/LucasBullen.toml | 2 + people/Xanewok.toml | 1 + people/alercah.toml | 1 + people/alexheretic.toml | 1 + people/arielb1.toml | 1 + people/ashleygwilliams.toml | 2 +- people/autozimu.toml | 1 + people/frewsxcv.toml | 1 + people/ishitatsuyuki.toml | 1 + people/jasonwilliams.toml | 1 + people/jseyfried.toml | 1 + people/llogiq.toml | 1 + people/matklad.toml | 1 + people/matthewjasper.toml | 1 + people/michaelwoerister.toml | 2 +- people/nasa42.toml | 3 + people/ollie27.toml | 1 + people/onur.toml | 1 + people/projektir.toml | 1 + people/rpjohnst.toml | 1 + people/skade.toml | 1 + people/solson.toml | 1 + people/ubsan.toml | 3 + people/vlad20012.toml | 1 + people/whitequark.toml | 1 + src/data.rs | 17 +- src/main.rs | 13 +- src/schema.rs | 98 ++++++++- src/validate.rs | 86 +++++--- teams/all.toml | 3 + teams/cargo.toml | 4 + teams/community.toml | 16 ++ teams/compiler.toml | 18 ++ teams/core.toml | 38 +++- teams/crates-io.toml | 31 +++ teams/devtools.toml | 12 + teams/docs.toml | 10 + teams/ecosystem.toml | 14 ++ teams/ides.toml | 8 + teams/infra.toml | 87 ++++++++ teams/lang.toml | 14 ++ teams/leads.toml | 18 ++ teams/libs.toml | 13 ++ teams/mods.toml | 8 + teams/release.toml | 4 + teams/rustdoc.toml | 4 + teams/security.toml | 14 ++ teams/style.toml | 16 ++ teams/twir.toml | 12 + teams/wg-leads.toml | 11 + 56 files changed, 652 insertions(+), 558 deletions(-) create mode 100644 people/nasa42.toml create mode 100644 people/ubsan.toml create mode 100644 teams/ecosystem.toml create mode 100644 teams/leads.toml create mode 100644 teams/security.toml create mode 100644 teams/style.toml create mode 100644 teams/twir.toml create mode 100644 teams/wg-leads.toml diff --git a/Cargo.lock b/Cargo.lock index 8598a72..ffffe11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,3 +1,11 @@ +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "atty" version = "0.2.11" @@ -29,6 +37,11 @@ dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bitflags" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "cc" version = "1.0.25" @@ -39,6 +52,20 @@ name = "cfg-if" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "clap" +version = "2.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "curl" version = "0.4.18" @@ -99,6 +126,14 @@ dependencies = [ "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "humantime" version = "1.1.1" @@ -164,6 +199,7 @@ dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -277,6 +313,31 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "strsim" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "structopt" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "structopt-derive" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "syn" version = "0.15.17" @@ -316,6 +377,14 @@ dependencies = [ "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "textwrap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "toml" version = "0.4.8" @@ -324,6 +393,16 @@ dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-segmentation" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-width" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -334,6 +413,11 @@ name = "vcpkg" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "vec_map" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "version_check" version = "0.1.5" @@ -386,16 +470,20 @@ dependencies = [ ] [metadata] +"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum curl 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a9e5285b49b44401518c947d3b808d14d99a538a6c9ffb3ec0205c11f9fc4389" "checksum curl-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "08459503c415173da1ce6b41036a37b8bfdd86af46d45abb9964d4c61fe670ef" "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" "checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" +"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" "checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" @@ -418,13 +506,20 @@ dependencies = [ "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" "checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" +"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "41c4a2479a078509940d82773d90ff824a8c89533ab3b59cd3ce8b0c0e369c02" +"checksum structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "5352090cfae7a2c85e1a31146268b53396106c88ca5d6ccee2e3fae83b6e35c2" "checksum syn 0.15.17 (registry+https://github.com/rust-lang/crates.io-index)" = "3391038ebc3e4ab24eb028cb0ef2f2dc4ba0cbf72ee895ed6a6fad730640b5bc" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" +"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65" +"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" +"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" +"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" diff --git a/Cargo.toml b/Cargo.toml index f8a37c2..83b3422 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,3 +13,4 @@ serde_derive = "1" serde_json = "1" log = "0.4" env_logger = { version = "0.5", default-features = false } +structopt = "0.2.13" diff --git a/mailmap.toml b/mailmap.toml index 4341d46..0438c42 100644 --- a/mailmap.toml +++ b/mailmap.toml @@ -1,274 +1,3 @@ -# All mailing lists managed on Mailgun. -# -# This file is synchronized to configuration on Mailgun via Travis whenever a -# commit is pushed to master. Travis just runs `cargo run` for this. The -# configuration for this file is one top-level key, `lists`, which is an array -# of mailing lists. -# -# Each mailing list has three keys: -# -# * `address` - the email address of this mailing list (including the domain) -# * `access_level` - one of the following: -# * `readonly` - only authenticated users can post -# * `members` - only members can post to the list -# * `everyone` - anyone can post to the list -# * `members` - an array of email addresses to forward mail to -# -# All mailing lists behave the same way. When an email is received it then -# broadcasts the email to all users of the mailing list. -# -# -# Current list of domains you can choose from: -# -# * rustlang.com -# * rustlang.net - -[[lists]] -address = 'admin@crates.io' -access_level = 'everyone' -members = [ - 'admin@rust-lang.org', -] - -[[lists]] -address = 'legal@crates.io' -access_level = 'everyone' -members = [ - 'core-team@rust-lang.org', -] - -[[lists]] -address = 'help@crates.io' -access_level = 'everyone' -members = [ - 'crates-io@rust-lang.org', -] - -[[lists]] -address = 'admin@rust-lang.org' -access_level = 'everyone' -members = [ - "alex@crichton.co", - "aturon@mozilla.com", -] - -[[lists]] -address = 'all@rust-lang.org' -access_level = 'everyone' -members = [ - "community@rust-lang.org", - "compiler@rust-lang.org", - "core@rust-lang.org", - "lang@rust-lang.org", - "libs@rust-lang.org", - "dev-tools@rust-lang.org", - "docs@rust-lang.org", - "infra@rust-lang.org", - "release@rust-lang.org", -] - -[[lists]] -address = 'appveyor-libs@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-ops@googlegroups.com", -] - -[[lists]] -address = 'appveyor@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-ops@googlegroups.com", -] - -[[lists]] -address = 'bors@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", -] - -[[lists]] -address = 'cargo@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "wycats@gmail.com", - "woboats@gmail.com", - "josh@joshtriplett.org", - "ncameron@mozilla.com", - "eric@huss.org", - "eh2406@wayne.edu", - "dale.wijnand@gmail.com", -] - -[[lists]] -address = 'community-team@rust-lang.org' -access_level = 'everyone' -members = [ - "community@rust-lang.org", -] - -[[lists]] -address = 'community@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-community@googlegroups.com", - "manishsmail@gmail.com", - "booyaabooyaabooyaa@gmail.com", - "janerik@fnordig.de", - "ashley@integer32.com", - "olivia@fastmail.com", - "mrgould93@gmail.com", - "amufti16@gmail.com", - "parry.wilcox@gmail.com", - "kookie@spacekookie.de", - "flo@andersground.net", - "rust@flaki.hu", - "mattgathu@gmail.com", - "celaus@gmail.com", - "wes@wezm.net", - "varma.sunjay@gmail.com", -] - -[[lists]] -address = 'compiler-team@rust-lang.org' -access_level = 'everyone' -members = [ - "compiler@rust-lang.org", -] - -[[lists]] -address = 'compiler@rust-lang.org' -access_level = 'everyone' -members = [ - "ariel.byd@gmail.com", - "nrc@mozilla.com", - "pnkfelix@mozilla.com", - "edy.burt@gmail.com", - "nmatsakis@mozilla.com", - "michaelwoerister@gmail.com", - "jeffrey.seyfried@gmail.com", - "vadim.petrochenkov@gmail.com", - "esteban@kuber.com.ar", - "zoxc32@gmail.com", - "cramertaylorj@gmail.com", - "simonas+t-compiler@kazlauskas.me", - "github@varkor.com", -] - -[[lists]] -address = 'core-team@rust-lang.org' -access_level = 'everyone' -members = [ - "core@rust-lang.org", -] - -[[lists]] -address = 'core@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "wycats@gmail.com", - "steve@steveklabnik.com", - "aturon@mozilla.com", - "nmatsakis@mozilla.com", - "erick.tryzelaar@gmail.com", - "nrc@mozilla.com", - "carol.nichols@gmail.com", - "mark.simulacrum@gmail.com", - "ashley666ashley@gmail.com", - "aidanhs@cantab.net", -] - -[[lists]] -address = 'craterbot@rust-lang.org' -access_level = 'everyone' -members = [ - "infra@rust-lang.org", -] - -[[lists]] -address = 'crates-io-cert@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-ops@googlegroups.com", -] - -[[lists]] -address = 'crates-io@rust-lang.org' -access_level = 'everyone' -members = [ - "ashley@integer32.com", - "carol.nichols@gmail.com", - "acrichton@mozilla.com", - "sean@seantheprogrammer.com", -] - -[[lists]] -address = 'dev-tools@rust-lang.org' -access_level = 'everyone' -members = [ - "woboats@gmail.com", - "manishsmail@gmail.com", - "steve@steveklabnik.com", - "nfitzgerald@mozilla.com", - "japaricious@gmail.com", - "killercup@gmail.com", - "ncameron@mozilla.com", -] - -[[lists]] -address = 'dmarc-rua@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-ops@googlegroups.com", -] - -[[lists]] -address = 'doc-team@rust-lang.org' -access_level = 'everyone' -members = [ - "docs@rust-lang.org", -] - -[[lists]] -address = 'docker-hub-rustci@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-ops@googlegroups.com", -] - -[[lists]] -address = 'docs@rust-lang.org' -access_level = 'everyone' -members = [ - "steve@steveklabnik.com", - "guillaume1.gomez@gmail.com", - "grey@quietmisdreavus.net", - "coreyf@rwell.org", - "oprojektir@gmail.com", - "ryan.havvy@gmail.com", - "alercah@gmail.com", -] - -[[lists]] -address = 'ecosystem@rust-lang.org' -access_level = 'everyone' -members = [ - "ashleymannix@live.com.au", - "woboats@gmail.com", - "sfackler@gmail.com", - "aturon@mozilla.com", -] - -[[lists]] -address = 'editors@rust-lang.org' -access_level = 'everyone' -members = [ - "ides@rust-lang.org", -] - [[lists]] address = 'embedded-wg@rust-lang.org' access_level = 'everyone' @@ -283,125 +12,6 @@ members = [ "pftbest@gmail.com", ] -[[lists]] -address = 'ides@rust-lang.org' -access_level = 'everyone' -members = [ - "beskvlad@gmail.com", - "alexheretic@gmail.com", - "jase.williams@gmail.com", - "autozimu@gmail.com", - "lbullen@redhat.com", - "aleksey.kladov@gmail.com", - "xanewok@gmail.com", - "ncameron@mozilla.com", -] - -[[lists]] -address = 'infra-team@rust-lang.org' -access_level = 'everyone' -members = [ - "infra@rust-lang.org", -] - -[[lists]] -address = 'infra@rust-lang.org' -access_level = 'everyone' -members = [ - "erick.tryzelaar@gmail.com", - "mail@timnn.me", - "jake.goulding@gmail.com", - "acrichton@mozilla.com", - "aidanhs@cantab.net", - "mark.simulacrum@gmail.com", - "aturon@mozilla.com", - "kennytm@gmail.com", - "ashley@integer32.com", - "sean@seantheprogrammer.com", - "pietro@pietroalbini.org", -] - -[[lists]] -address = 'lang-private@rust-lang.org' -access_level = 'everyone' -members = [ - "nmatsakis@mozilla.com", - "nrc@mozilla.com", - "pnkfelix@mozilla.com", - "aturon@mozilla.com", - "edy.burt@gmail.com", - "woboats@gmail.com", - "cramertaylorj@gmail.com", - "josh@joshtriplett.org", - "smcmurray@acm.org", - "twingoow@gmail.com", -] - -[[lists]] -address = 'lang@rust-lang.org' -access_level = 'everyone' -members = [ - "lang-private@rust-lang.org", - "scott@solson.me", - "whitequark@whitequark.org", -] - -[[lists]] -address = 'language-design-team@rust-lang.org' -access_level = 'everyone' -members = [ - "lang@rust-lang.org", -] - -[[lists]] -address = 'leads@rust-lang.org' -access_level = 'everyone' -members = [ - "wg-leads@rust-lang.org", - "aturon@mozilla.com", - "ashley@integer32.com", - "nmatsakis@mozilla.com", - "nrc@mozilla.com", - "aidanhs@cantab.net", - "mark.simulacrum@gmail.com", - "steve@steveklabnik.com", -] - -[[lists]] -address = 'library-team@rust-lang.org' -access_level = 'everyone' -members = [ - "libs@rust-lang.org", -] - -[[lists]] -address = 'libs-private@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "aturon@mozilla.com", - "sfackler@gmail.com", - "jamslam@gmail.com", - "loebel.marvin@gmail.com", - "dtolnay@gmail.com", - "ssapin@mozilla.com", -] - -[[lists]] -address = 'libs@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "aturon@mozilla.com", - "sfackler@gmail.com", - "jamslam@gmail.com", - "loebel.marvin@gmail.com", - "dtolnay@gmail.com", - "ashleymannix@live.com.au", - "woboats@gmail.com", - "ssapin@mozilla.com", -] - [[lists]] address = 'net@rust-lang.org' access_level = 'everyone' @@ -455,16 +65,6 @@ members = [ "armin.ronacher@active-4.com", ] -[[lists]] -address = 'production@rust-lang.org' -access_level = 'everyone' -members = [ - "aidanhs@cantab.net", - "nrc@mozilla.com", - "claus.matzinger@gmail.com", - "aturon@mozilla.com", -] - [[lists]] address = 'reach@rust-lang.org' access_level = 'everyone' @@ -475,28 +75,6 @@ members = [ "aidanhs@cantab.net", ] -[[lists]] -address = 'release@rust-lang.org' -access_level = 'everyone' -members = [ - "mark.simulacrum@gmail.com", - "sertac.olgunsoylu@gmail.com", - "justplayyeh@gmail.com", - "cuviper@gmail.com", - "trevorreiff@gmail.com", - "joe@unicornclouds.com", - "theaaronepower@gmail.com", - "pramodpsb@hotmail.com", - "cssivision@gmail.com", - "araz@abishov.com", - "pietro@pietroalbini.org", - "dyxushuai@gmail.com", - "batmanaod@gmail.com", - "adrianquiroga@outlook.com", - "hanquang@outlook.com", - "sean@seantheprogrammer.com", -] - [[lists]] address = 'rust-2018@rust-lang.org' access_level = 'everyone' @@ -515,13 +93,6 @@ members = [ "aturon@mozilla.com", ] -[[lists]] -address = 'rust-dev-tools@rust-lang.org' -access_level = 'everyone' -members = [ - "dev-tools@rust-lang.org", -] - [[lists]] address = 'rust-icci@rust-lang.org' access_level = 'everyone' @@ -529,21 +100,6 @@ members = [ "mwoerister@mozilla.com", ] -[[lists]] -address = 'rust-key@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "aturon@mozilla.com", -] - -[[lists]] -address = 'rust-mods@rust-lang.org' -access_level = 'everyone' -members = [ - "rust-mods@googlegroups.com", -] - [[lists]] address = 'rustbridge@rust-lang.org' access_level = 'everyone' @@ -552,61 +108,6 @@ members = [ "amufti16@gmail.com", ] -[[lists]] -address = 'rustdoc@rust-lang.org' -access_level = 'everyone' -members = [ - "grey@quietmisdreavus.net", - "steve@steveklabnik.com", - "guillaume1.gomez@gmail.com", - "olliemail27@gmail.com", - "onuraslan@gmail.com", -] - -[[lists]] -address = 'security@rust-lang.org' -access_level = 'everyone' -members = [ - "acrichton@mozilla.com", - "nmatsakis@mozilla.com", - "steve@steveklabnik.com", - "wycats@gmail.com", -] - -[[lists]] -address = 'style-team@rust-lang.org' -access_level = 'everyone' -members = [ - "scott@solson.me", - "josh@joshtriplett.org", - "japaricious@gmail.com", - "steve@steveklabnik.com", - "npmazzuca@gmail.com", - "ncameron@mozilla.com", -] - -[[lists]] -address = 'team@rust-lang.org' -access_level = 'everyone' -members = [ - "all@rust-lang.org", -] - -[[lists]] -address = 'tools-team@rust-lang.org' -access_level = 'everyone' -members = [ - "dev-tools@rust-lang.org", -] - -[[lists]] -address = 'trademark@rust-lang.org' -access_level = 'everyone' -members = [ - "aturon@mozilla.com", - "nmatsakis@mozilla.com", -] - [[lists]] address = 'twir@rust-lang.org' access_level = 'everyone' @@ -649,14 +150,3 @@ members = [ "aturon@mozilla.com", "mgattozzi@gmail.com", ] - -[[lists]] -address = 'wg-leads@rust-lang.org' -access_level = 'everyone' -members = [ - "cramertaylorj@gmail.com", - "woboats@gmail.com", - "killercup@gmail.com", - "nfitzgerald@mozilla.com", - "japaricious@gmail.com", -] diff --git a/people/BurntSushi.toml b/people/BurntSushi.toml index afebf4a..c1e7ef1 100644 --- a/people/BurntSushi.toml +++ b/people/BurntSushi.toml @@ -1,3 +1,4 @@ name = "Andrew Gallant" github = "BurntSushi" irc-nickname = "burntsushi" +email = "jamslam@gmail.com" diff --git a/people/Centril.toml b/people/Centril.toml index 8531506..0c17cf6 100644 --- a/people/Centril.toml +++ b/people/Centril.toml @@ -1,3 +1,4 @@ name = "Mazdak Farrokhzad" github = "Centril" irc-nickname = "centril" +email = "twingoow@gmail.com" diff --git a/people/Havvy.toml b/people/Havvy.toml index 87f5e90..14e417b 100644 --- a/people/Havvy.toml +++ b/people/Havvy.toml @@ -1,2 +1,3 @@ name = "Ryan Scheel" github = "Havvy" +email = "ryan.havvy@gmail.com" diff --git a/people/LucasBullen.toml b/people/LucasBullen.toml index f9bb4bb..5c9adc1 100644 --- a/people/LucasBullen.toml +++ b/people/LucasBullen.toml @@ -1,2 +1,4 @@ name = "Lucas Bullen" github = "LucasBullen" +email = "lbullen@redhat.com" + diff --git a/people/Xanewok.toml b/people/Xanewok.toml index 727c09b..011f120 100644 --- a/people/Xanewok.toml +++ b/people/Xanewok.toml @@ -1,2 +1,3 @@ name = "Igor Matuszewski" github = "Xanewok" +email = "xanewok@gmail.com" diff --git a/people/alercah.toml b/people/alercah.toml index 52eadfd..5c907be 100644 --- a/people/alercah.toml +++ b/people/alercah.toml @@ -1,2 +1,3 @@ name = "Alexis Hunt" github = "alercah" +email = "alercah@gmail.com" diff --git a/people/alexheretic.toml b/people/alexheretic.toml index 0113492..7dc0eff 100644 --- a/people/alexheretic.toml +++ b/people/alexheretic.toml @@ -1,2 +1,3 @@ name = "Alex Butler" github = "alexheretic" +email = "alexheretic@gmail.com" diff --git a/people/arielb1.toml b/people/arielb1.toml index 35254b0..afc30fe 100644 --- a/people/arielb1.toml +++ b/people/arielb1.toml @@ -1,2 +1,3 @@ name = "Ariel Ben-Yehuda" github = "arielb1" +email = "ariel.byd@gmail.com" diff --git a/people/ashleygwilliams.toml b/people/ashleygwilliams.toml index 4bf3303..ae9bb16 100644 --- a/people/ashleygwilliams.toml +++ b/people/ashleygwilliams.toml @@ -1,4 +1,4 @@ name = "Ashley Williams" github = "ashleygwilliams" irc-nickname = "agdubs" -email = "ashley666ashley@gmail.com" +email = "ashley@integer32.com" diff --git a/people/autozimu.toml b/people/autozimu.toml index 11baaae..aad825d 100644 --- a/people/autozimu.toml +++ b/people/autozimu.toml @@ -1,2 +1,3 @@ name = "Junfeng Li" github = "autozimu" +email = "autozimu@gmail.com" diff --git a/people/frewsxcv.toml b/people/frewsxcv.toml index cad837b..d34707f 100644 --- a/people/frewsxcv.toml +++ b/people/frewsxcv.toml @@ -1,3 +1,4 @@ name = "Corey Farwell" github = "frewsxcv" irc-nickname = "frewsxcv" +email = "coreyf@rwell.org" diff --git a/people/ishitatsuyuki.toml b/people/ishitatsuyuki.toml index dce980f..d6fc226 100644 --- a/people/ishitatsuyuki.toml +++ b/people/ishitatsuyuki.toml @@ -1,2 +1,3 @@ name = "Tatsuyuki Ishi" github = "ishitatsuyuki" +email = "ishitatsuyuki@gmail.com" diff --git a/people/jasonwilliams.toml b/people/jasonwilliams.toml index cc8faa5..fd9c6c9 100644 --- a/people/jasonwilliams.toml +++ b/people/jasonwilliams.toml @@ -1,2 +1,3 @@ name = "Jason Williams" github = "jasonwilliams" +email = "jase.williams@gmail.com" diff --git a/people/jseyfried.toml b/people/jseyfried.toml index 50b8390..f6a4637 100644 --- a/people/jseyfried.toml +++ b/people/jseyfried.toml @@ -1,3 +1,4 @@ name = "Jeffrey Seyfried" github = "jseyfried" irc-nickname = "jseyfried" +email = "jeffrey.seyfried@gmail.com" diff --git a/people/llogiq.toml b/people/llogiq.toml index b98be48..6118e5c 100644 --- a/people/llogiq.toml +++ b/people/llogiq.toml @@ -1,2 +1,3 @@ name = "Andre Bogus" github = "llogiq" +email = "bogusandre@gmail.com" diff --git a/people/matklad.toml b/people/matklad.toml index bb56663..35e5cc5 100644 --- a/people/matklad.toml +++ b/people/matklad.toml @@ -1,2 +1,3 @@ name = "Aleksey Kladov" github = "matklad" +email = "aleksey.kladov@gmail.com" diff --git a/people/matthewjasper.toml b/people/matthewjasper.toml index 82d9d42..07247f0 100644 --- a/people/matthewjasper.toml +++ b/people/matthewjasper.toml @@ -1,2 +1,3 @@ name = "Matthew Jasper" github = "matthewjasper" +email = "mjjasper1@gmail.com" diff --git a/people/michaelwoerister.toml b/people/michaelwoerister.toml index ca33042..b3b88fa 100644 --- a/people/michaelwoerister.toml +++ b/people/michaelwoerister.toml @@ -1,4 +1,4 @@ name = "Michael Woerister" github = "michaelwoerister" irc-nickname = "mw" -email = "mwoerister@mozilla.com" +email = "michaelwoerister@gmail.com" diff --git a/people/nasa42.toml b/people/nasa42.toml new file mode 100644 index 0000000..2114065 --- /dev/null +++ b/people/nasa42.toml @@ -0,0 +1,3 @@ +name = "Vikrant Chaudhary" +github = "nasa42" +email = "vikrant@webstream.io" diff --git a/people/ollie27.toml b/people/ollie27.toml index 2041a2a..7b751a7 100644 --- a/people/ollie27.toml +++ b/people/ollie27.toml @@ -1,2 +1,3 @@ name = "Oliver Middleton" github = "ollie27" +email = "olliemail27@gmail.com" diff --git a/people/onur.toml b/people/onur.toml index af9dfaa..fad43dc 100644 --- a/people/onur.toml +++ b/people/onur.toml @@ -1,2 +1,3 @@ name = "Onur Aslan" github = "onur" +email = "onuraslan@gmail.com" diff --git a/people/projektir.toml b/people/projektir.toml index 7c95e9b..5b50935 100644 --- a/people/projektir.toml +++ b/people/projektir.toml @@ -1,2 +1,3 @@ name = "projektir" github = "projektir" +email = "oprojektir@gmail.com" diff --git a/people/rpjohnst.toml b/people/rpjohnst.toml index 115a8e6..8487ea4 100644 --- a/people/rpjohnst.toml +++ b/people/rpjohnst.toml @@ -1,3 +1,4 @@ name = "Russell Johnston" github = "rpjohnst" irc-nickname = "Rusky" +email = "rpjohnst@gmail.com" diff --git a/people/skade.toml b/people/skade.toml index 18ae785..4bb256a 100644 --- a/people/skade.toml +++ b/people/skade.toml @@ -1,2 +1,3 @@ name = "Florian Gilcher" github = "skade" +email = "flo@andersground.net" diff --git a/people/solson.toml b/people/solson.toml index aa7efd5..4baf818 100644 --- a/people/solson.toml +++ b/people/solson.toml @@ -1,3 +1,4 @@ name = "Scott Olson" github = "solson" irc-nickname = "scott" +email = "scott@solson.me" diff --git a/people/ubsan.toml b/people/ubsan.toml new file mode 100644 index 0000000..99c076e --- /dev/null +++ b/people/ubsan.toml @@ -0,0 +1,3 @@ +name = "Nicole Mazzuca" +github = "ubsan" +email = "npmazzuca@gmail.com" diff --git a/people/vlad20012.toml b/people/vlad20012.toml index 45960f1..73296b6 100644 --- a/people/vlad20012.toml +++ b/people/vlad20012.toml @@ -1,2 +1,3 @@ name = "Vlad Beskrovnyy" github = "vlad20012" +email = "beskvlad@gmail.com" diff --git a/people/whitequark.toml b/people/whitequark.toml index de28969..9872c02 100644 --- a/people/whitequark.toml +++ b/people/whitequark.toml @@ -1,2 +1,3 @@ name = "whitequark" github = "whitequark" +email = "whitequark@whitequark.org" diff --git a/src/data.rs b/src/data.rs index 2734f38..061badb 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1,4 +1,4 @@ -use crate::schema::{Person, Team}; +use crate::schema::{Person, Team, List}; use failure::{Error, ResultExt}; use serde::Deserialize; use std::collections::HashMap; @@ -48,6 +48,21 @@ impl Data { Ok(()) } + pub(crate) fn lists(&self) -> Result, Error> { + let mut lists = HashMap::new(); + for team in self.teams.values() { + for list in team.lists(self)? { + lists.insert(list.address().to_string(), list); + } + } + Ok(lists) + } + + pub(crate) fn list(&self, name: &str) -> Result, Error> { + let mut lists = self.lists()?; + Ok(lists.remove(name)) + } + pub(crate) fn team(&self, name: &str) -> Option<&Team> { self.teams.get(name) } diff --git a/src/main.rs b/src/main.rs index 4cd04d6..7ae7817 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,11 @@ enum Cli { #[structopt(name = "dump-team", help = "print the members of a team")] DumpTeam { name: String, - } + }, + #[structopt(name = "dump-list", help = "print all the emails in a list")] + DumpList { + name: String, + }, } fn main() { @@ -54,6 +58,13 @@ fn run() -> Result<(), Error> { }); } } + Cli::DumpList { ref name } => { + let data = Data::load()?; + let list = data.list(name)?.ok_or_else(|| err_msg("unknown list"))?; + for email in list.emails() { + println!("{}", email); + } + } } Ok(()) diff --git a/src/schema.rs b/src/schema.rs index bab5809..5e08a26 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -1,5 +1,5 @@ use crate::data::Data; -use failure::{Error, err_msg}; +use failure::{err_msg, Error}; use std::collections::HashSet; #[derive(serde_derive::Deserialize, Debug)] @@ -7,9 +7,11 @@ pub(crate) struct Person { name: String, github: String, irc: Option, + email: Option, } impl Person { + #[allow(unused)] pub(crate) fn name(&self) -> &str { &self.name } @@ -18,6 +20,7 @@ impl Person { &self.github } + #[allow(unused)] pub(crate) fn irc(&self) -> &str { if let Some(irc) = &self.irc { irc @@ -25,6 +28,10 @@ impl Person { &self.github } } + + pub(crate) fn email(&self) -> Option<&str> { + self.email.as_ref().map(|e| e.as_str()) + } } #[derive(serde_derive::Deserialize, Debug)] @@ -33,6 +40,8 @@ pub(crate) struct Team { #[serde(default)] children: Vec, people: TeamPeople, + #[serde(default)] + lists: Vec, } impl Team { @@ -56,6 +65,48 @@ impl Team { } Ok(members) } + + pub(crate) fn lists(&self, data: &Data) -> Result, Error> { + let mut lists = Vec::new(); + for raw_list in &self.lists { + let mut list = List { + address: raw_list.address.clone(), + access_level: raw_list.access_level, + emails: Vec::new(), + }; + + let mut members = if raw_list.include_team_members { + self.members(data)? + } else { + HashSet::new() + }; + for person in &raw_list.extra_people { + members.insert(person.as_str()); + } + for team in &raw_list.extra_teams { + let team = data + .team(team) + .ok_or_else(|| err_msg(format!("team {} is missing", team)))?; + for member in team.members(data)? { + members.insert(member); + } + } + + for member in members.iter() { + let member = data + .person(member) + .ok_or_else(|| err_msg(format!("member {} is missing", member)))?; + if let Some(email) = member.email() { + list.emails.push(email.to_string()); + } + } + for extra in &raw_list.extra_emails { + list.emails.push(extra.to_string()); + } + lists.push(list); + } + Ok(lists) + } } #[derive(serde_derive::Deserialize, Debug)] @@ -63,3 +114,48 @@ struct TeamPeople { leads: Vec, members: Vec, } + +#[derive(serde_derive::Deserialize, Debug)] +#[serde(rename_all = "kebab-case")] +pub(crate) struct TeamList { + address: String, + access_level: ListAccessLevel, + #[serde(default = "default_true")] + include_team_members: bool, + #[serde(default)] + extra_people: Vec, + #[serde(default)] + extra_emails: Vec, + #[serde(default)] + extra_teams: Vec, +} + +#[derive(serde_derive::Deserialize, Debug, Copy, Clone)] +#[serde(rename_all = "kebab-case")] +pub(crate) enum ListAccessLevel { + Everyone, + Members, + #[serde(rename = "read-only")] + Readonly, +} + +#[derive(Debug)] +pub(crate) struct List { + address: String, + access_level: ListAccessLevel, + emails: Vec, +} + +impl List { + pub(crate) fn address(&self) -> &str { + &self.address + } + + pub(crate) fn emails(&self) -> &[String] { + &self.emails + } +} + +fn default_true() -> bool { + true +} diff --git a/src/validate.rs b/src/validate.rs index 61e0778..250f172 100644 --- a/src/validate.rs +++ b/src/validate.rs @@ -8,6 +8,7 @@ pub(crate) fn validate(data: &Data) -> Result<(), Error> { validate_team_leads(data, &mut errors); validate_team_members(data, &mut errors); validate_inactive_members(data, &mut errors); + validate_list_email_addresses(data, &mut errors); if !errors.is_empty() { for err in &errors { @@ -22,58 +23,73 @@ pub(crate) fn validate(data: &Data) -> Result<(), Error> { /// Ensure team leaders are part of the teams they lead fn validate_team_leads(data: &Data, errors: &mut Vec) { - for team in data.teams() { - let members = match team.members(data) { - Ok(m) => m, - Err(err) => { - errors.push(err.to_string()); - continue; - } - }; - for lead in team.leads() { + wrapper(data.teams(), errors, |team, errors| { + let members = team.members(data)?; + wrapper(team.leads().iter(), errors, |lead, _| { if !members.contains(lead) { - errors.push(format!("`{}` leads team `{}`, but is not a member of it", lead, team.name())); + bail!("`{}` leads team `{}`, but is not a member of it", lead, team.name()); } - } - } + Ok(()) + }); + Ok(()) + }); } /// Ensure team members are people fn validate_team_members(data: &Data, errors: &mut Vec) { - for team in data.teams() { - let members = match team.members(data) { - Ok(m) => m, - Err(err) => { - errors.push(err.to_string()); - continue; - } - }; - for member in members { + wrapper(data.teams(), errors, |team, errors| { + wrapper(team.members(data)?.iter(), errors, |member, _| { if data.person(member).is_none() { - errors.push(format!("person `{}` is member of team `{}` but doesn't exist", member, team.name())); + bail!("person `{}` is member of team `{}` but doesn't exist", member, team.name()); } - } - } + Ok(()) + }); + Ok(()) + }); } /// Ensure every person is part of at least a team fn validate_inactive_members(data: &Data, errors: &mut Vec) { let mut active_members = HashSet::new(); - for team in data.teams() { - let members = match team.members(data) { - Ok(m) => m, - Err(err) => { - errors.push(err.to_string()); - continue; - } - }; + wrapper(data.teams(), errors, |team, _| { + let members = team.members(data)?; for member in members { active_members.insert(member); } - } + Ok(()) + }); let all_members = data.people().map(|p| p.github()).collect::>(); - for person in all_members.difference(&active_members) { - errors.push(format!("person `{}` is not a member of any team", person)); + wrapper(all_members.difference(&active_members), errors, |person, _| { + bail!("person `{}` is not a member of any team", person); + }); +} + +/// Ensure every member of a team with a mailing list has an email address +fn validate_list_email_addresses(data: &Data, errors: &mut Vec) { + wrapper(data.teams(), errors, |team, errors| { + if team.lists(data)?.is_empty() { + return Ok(()); + } + wrapper(team.members(data)?.iter(), errors, |member, _| { + let member = data.person(member).unwrap(); + if member.email().is_none() { + bail!("person `{}` is a member of a mailing list but has no email address", member.github()); + } + Ok(()) + }); + Ok(()) + }); +} + +fn wrapper(iter: I, errors: &mut Vec, mut func: F) +where + I: Iterator, + F: FnMut(T, &mut Vec) -> Result<(), Error>, +{ + for item in iter { + if let Err(err) = func(item, errors) { + errors.push(err.to_string()); + } } } diff --git a/teams/all.toml b/teams/all.toml index 17921cf..e12425a 100644 --- a/teams/all.toml +++ b/teams/all.toml @@ -5,10 +5,13 @@ children = [ "core", "devtools", "docs", + "docs-peers", "infra", "lang", + "lang-shepherds", "libs", "release", + "rustdoc", ] [people] diff --git a/teams/cargo.toml b/teams/cargo.toml index 5a63841..1839bd2 100644 --- a/teams/cargo.toml +++ b/teams/cargo.toml @@ -16,3 +16,7 @@ members = [ [website] name = "Cargo team" description = "design and implementation of Cargo" + +[[lists]] +address = "cargo@rust-lang.org" +access-level = "everyone" diff --git a/teams/community.toml b/teams/community.toml index cdab6f1..18c0249 100644 --- a/teams/community.toml +++ b/teams/community.toml @@ -26,3 +26,19 @@ members = [ name = "Community team" description = "coordinating events, outreach, commercial users, teaching materials, and exposure" email = "community@rust-lang.org" + +[[lists]] +address = "community@rust-lang.org" +access-level = "everyone" +extra-emails = [ + "rust-community@googlegroups.com", + "varma.sunjay@gmail.com", +] + +[[lists]] +address = "community-team@rust-lang.org" +access-level = "everyone" +extra-emails = [ + "rust-community@googlegroups.com", + "varma.sunjay@gmail.com", +] diff --git a/teams/compiler.toml b/teams/compiler.toml index 93603fa..7612f6a 100644 --- a/teams/compiler.toml +++ b/teams/compiler.toml @@ -19,3 +19,21 @@ members = [ [website] name = "Compiler team" description = "compiler internals, optimizations" + +[[lists]] +address = "compiler@rust-lang.org" +access-level = "everyone" +extra-people = [ + "arielb1", + "jseyfried", + "nrc", +] + +[[lists]] +address = "compiler-team@rust-lang.org" +access-level = "everyone" +extra-people = [ + "arielb1", + "jseyfried", + "nrc", +] diff --git a/teams/core.toml b/teams/core.toml index 0538fa7..280091b 100644 --- a/teams/core.toml +++ b/teams/core.toml @@ -3,18 +3,40 @@ name = "core" [people] leads = [] members = [ - "nrc", - "alexcrichton", - "aidanhs", - "wycats", - "steveklabnik", - "nikomatsakis", - "carols10cents", "Mark-Simulacrum", - "aturon", + "aidanhs", + "alexcrichton", "ashleygwilliams", + "aturon", + "carols10cents", + "erickt", + "nikomatsakis", + "nrc", + "steveklabnik", + "wycats", ] [website] name = "Core team" description = "overall direction of the project, subteam leadership, cross-cutting concerns" + +[[lists]] +address = "core@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "core-team@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "legal@crates.io" +access-level = "everyone" + +[[lists]] +address = "trademark@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "aturon", + "nikomatsakis", +] diff --git a/teams/crates-io.toml b/teams/crates-io.toml index 351293c..cf7a505 100644 --- a/teams/crates-io.toml +++ b/teams/crates-io.toml @@ -18,3 +18,34 @@ members = [ name = "Crates.io team" description = "management of operations, development, and policies for crates.io" email = "help@crates.io" + +[[lists]] +address = "help@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "carols10cents", + "ashleygwilliams", + "sgrif", + "alexcrichton", +] + +[[lists]] +address = "crates-io@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "carols10cents", + "ashleygwilliams", + "sgrif", + "alexcrichton", +] + +[[lists]] +address = "admin@crates.io" +access-level = "everyone" +include-team-members = false +extra-people = [ + "aturon", + "alexcrichton", +] diff --git a/teams/devtools.toml b/teams/devtools.toml index 2228647..f60edff 100644 --- a/teams/devtools.toml +++ b/teams/devtools.toml @@ -15,3 +15,15 @@ members = [ [website] name = "Dev tools team" description = "Rust developer tools" + +[[lists]] +address = "dev-tools@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "rust-dev-tools@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "tools-team@rust-lang.org" +access-level = "everyone" diff --git a/teams/docs.toml b/teams/docs.toml index bd46312..9af72ce 100644 --- a/teams/docs.toml +++ b/teams/docs.toml @@ -12,3 +12,13 @@ members = [ [website] name = "Documentation team" description = "ensuring Rust has fantastic documentation" + +[[lists]] +address = "docs@rust-lang.org" +access-level = "everyone" +extra-teams = ["docs-peers"] + +[[lists]] +address = "doc-team@rust-lang.org" +access-level = "everyone" +extra-teams = ["docs-peers"] diff --git a/teams/ecosystem.toml b/teams/ecosystem.toml new file mode 100644 index 0000000..a5e7848 --- /dev/null +++ b/teams/ecosystem.toml @@ -0,0 +1,14 @@ +name = "ecosystem" + +[people] +leads = [] +members = [ + "KodrAus", + "withoutboats", + "sfackler", + "aturon", +] + +[[lists]] +address = "ecosystem@rust-lang.org" +access-level = "everyone" diff --git a/teams/ides.toml b/teams/ides.toml index d654b5a..4d7c171 100644 --- a/teams/ides.toml +++ b/teams/ides.toml @@ -16,3 +16,11 @@ members = [ [website] name = "IDEs and editors team" description = "IDEs, editors, and supporting tools such as Racer and the RLS" + +[[lists]] +address = "ides@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "editors@rust-lang.org" +access-level = "everyone" diff --git a/teams/infra.toml b/teams/infra.toml index d65f870..a1b32f5 100644 --- a/teams/infra.toml +++ b/teams/infra.toml @@ -19,3 +19,90 @@ members = [ name = "Infrastructure team" description = "infrastructure supporting the Rust project itself: CI, releases, bots, metrics" email = "infra@rust-lang.org" + +[[lists]] +address = "infra@rust-lang.org" +access-level = "everyone" +extra-people = [ + "aturon", +] + +[[lists]] +address = "infra-team@rust-lang.org" +access-level = "everyone" +extra-people = [ + "aturon", +] + +[[lists]] +address = "craterbot@rust-lang.org" +access-level = "everyone" +extra-people = [ + "aturon", +] + +[[lists]] +address = "admin@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "aturon", + "alexcrichton", +] + +[[lists]] +address = "rust-key@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "aturon", + "alexcrichton", +] + +[[lists]] +address = "appveyor@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-ops@googlegroups.com", +] + +[[lists]] +address = "appveyor-libs@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-ops@googlegroups.com", +] + +[[lists]] +address = "bors@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-people = [ + "alexcrichton", +] + +[[lists]] +address = "crates-io-cert@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-ops@googlegroups.com", +] + +[[lists]] +address = "dmarc-rua@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-ops@googlegroups.com", +] + +[[lists]] +address = "docker-hub-rustci@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-ops@googlegroups.com", +] diff --git a/teams/lang.toml b/teams/lang.toml index b0803dc..43d6fee 100644 --- a/teams/lang.toml +++ b/teams/lang.toml @@ -18,3 +18,17 @@ members = [ [website] name = "Language team" description = "designing new language features" + +[[lists]] +address = "lang-private@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "lang@rust-lang.org" +access-level = "everyone" +extra-teams = ["lang-shepherds"] + +[[lists]] +address = "language-design-team@rust-lang.org" +access-level = "everyone" +extra-teams = ["lang-shepherds"] diff --git a/teams/leads.toml b/teams/leads.toml new file mode 100644 index 0000000..27def3e --- /dev/null +++ b/teams/leads.toml @@ -0,0 +1,18 @@ +name = "leads" + +[people] +leads = [] +members = [ + "aturon", + "ashleygwilliams", + "nikomatsakis", + "nrc", + "aidanhs", + "Mark-Simulacrum", + "steveklabnik", +] + +[[lists]] +address = "leads@rust-lang.org" +access-level = "everyone" +extra-teams = ["wg-leads"] diff --git a/teams/libs.toml b/teams/libs.toml index 280e07a..6265e0a 100644 --- a/teams/libs.toml +++ b/teams/libs.toml @@ -17,3 +17,16 @@ members = [ [website] name = "Library team" description = "the Rust standard library, rust-lang crates, conventions, and ecosystem support" + +[[lists]] +address = "libs-private@rust-lang.org" +access-level = "everyone" +# TODO: without KodrAus and withoutboats + +[[lists]] +address = "libs@rust-lang.org" +access-level = "everyone" + +[[lists]] +address = "library-team@rust-lang.org" +access-level = "everyone" diff --git a/teams/mods.toml b/teams/mods.toml index ef36a7a..07e8ded 100644 --- a/teams/mods.toml +++ b/teams/mods.toml @@ -16,3 +16,11 @@ members = [ name = "Moderation team" description = "helping uphold the code of conduct" email = "rust-mods@rust-lang.org" + +[[lists]] +address = "rust-mods@rust-lang.org" +access-level = "everyone" +include-team-members = false +extra-emails = [ + "rust-mods@googlegroups.com" +] diff --git a/teams/release.toml b/teams/release.toml index 3781cb1..749c220 100644 --- a/teams/release.toml +++ b/teams/release.toml @@ -28,3 +28,7 @@ members = [ name = "Release team" description = "tracking regressions, stabilizations, and producing Rust releases" email = "release@rust-lang.org" + +[[lists]] +address = "release@rust-lang.org" +access-level = "everyone" diff --git a/teams/rustdoc.toml b/teams/rustdoc.toml index 7f73171..8b396dc 100644 --- a/teams/rustdoc.toml +++ b/teams/rustdoc.toml @@ -13,3 +13,7 @@ members = [ [website] name = "Rustdoc team" description = "Documentation tools including Rustdoc and docs.rs" + +[[lists]] +address = "rustdoc@rust-lang.org" +access-level = "everyone" diff --git a/teams/security.toml b/teams/security.toml new file mode 100644 index 0000000..b60fd01 --- /dev/null +++ b/teams/security.toml @@ -0,0 +1,14 @@ +name = "security" + +[people] +leads = [] +members = [ + "alexcrichton", + "nikomatsakis", + "steveklabnik", + "wycats", +] + +[[lists]] +address = "security@rust-lang.org" +access-level = "everyone" diff --git a/teams/style.toml b/teams/style.toml new file mode 100644 index 0000000..224a2f5 --- /dev/null +++ b/teams/style.toml @@ -0,0 +1,16 @@ +name = "style" + +[people] +leads = [] +members = [ + "japaric", + "joshtriplett", + "nrc", + "solson", + "steveklabnik", + "ubsan", +] + +[[lists]] +address = "style-team@rust-lang.org" +access-level = "everyone" diff --git a/teams/twir.toml b/teams/twir.toml new file mode 100644 index 0000000..402f078 --- /dev/null +++ b/teams/twir.toml @@ -0,0 +1,12 @@ +name = "twir" + +[people] +leads = [] +members = [ + "llogiq", + "nasa42", +] + +[[lists]] +address = "twir@rust-lang.org" +access-level = "everyone" diff --git a/teams/wg-leads.toml b/teams/wg-leads.toml new file mode 100644 index 0000000..022199c --- /dev/null +++ b/teams/wg-leads.toml @@ -0,0 +1,11 @@ +name = "wg-leads" + +[people] +leads = [] +members = [ + "cramertj", + "withoutboats", + "killercup", + "fitzgen", + "japaric", +] -- cgit v1.2.3