-
Notifications
You must be signed in to change notification settings - Fork 289
/
Copy pathtoml-schema.md
188 lines (164 loc) · 5.87 KB
/
toml-schema.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# TOML schema reference
## People
Every member of a Rust team is represented by a file in the `people` directory.
The file structure is this:
```toml
name = "John Doe" # Real name of the person (required)
github = "johndoe" # GitHub username of the person (required)
github-id = 123456 # GitHub ID of the person (required)
zulip-id = 123456 # Zulip ID of the person (optional)
# You can also set `email = false` to explicitly disable the email for the user.
# This will, for example, avoid adding the person to the mailing lists.
email = "[email protected]" # Email address used for mailing lists (optional)
irc-nickname = "jdoe" # Nickname of the person on IRC, if different than the GitHub one (optional)
[permissions]
# Optional, see the permissions documentation
```
The file must be named the same as the GitHub username.
## Teams
Each Rust team or working group is represented by a file in the `teams`
directory. The structure of the file is this:
```toml
name = "overlords" # Name of the team, used for GitHub (required)
subteam-of = "gods" # Name of the parent team of this team (optional)
# The kind of the team (optional). Could be be:
# - team (default)
# - working-group
# - project-group
# - marker-team
kind = "working-group"
[people]
# Leads of the team, can be more than one and must be members of the team.
# Required, but it can be empty
leads = ["bors"]
# Members of the team, can be empty
members = [
"bors",
"rust-highfive",
"rfcbot",
"craterbot",
"rust-timer",
]
# Past members of the team. They will not be considered as part of the team,
# but they will be recognized on the website.
alumni = [
"buildbot",
]
# Optional, include all members of all other teams.
# Defaults to false.
include-all-team-members = false
[permissions]
# Optional, applies to all team members. See the permissions documentation
[leads-permissions]
# Optional, applies only to team leads. See the permissions documentation
# Configure the GitHub integration
# This is optional, and if missing the team won't be synchronized with GitHub
[github]
team-name = "overlords-team" # The name of the GitHub team (optional)
orgs = ["rust-lang"] # Organizations to create the team in (required)
# Include members of these Rust teams in this GitHub team (optional)
extra-teams = ["bots-nursery"]
# Define the mailing lists used by the team
# It's optional, and there can be more than one
[[lists]]
# The email address of the list (required)
address = "[email protected]"
# Access level of the list (required)
# - readonly: only users authenticated with Mailgun can send mails
# - members: only members of the list can send mails
# - everyone: everyone can send mails
access-level = "everyone"
# This can be set to false to avoid including all the team members in the list
# It's useful if you want to create the list with a different set of members
# It's optional, and the default is `true`.
include-team-members = true
# Include the following extra people in the mailing list. Their email address
# will be fetched from their TOML in people/ (optional).
extra-people = [
"alexcrichton",
]
# Include the following email addresses in the mailing list (optional).
extra-emails = [
]
# Include all the members of the following teams in the mailing list
# (optional).
extra-teams = [
"bots-nursery",
]
# Define the Zulip groups used by the team
# It's optional, and there can be more than one
[[zulip-groups]]
# The name of the Zulip group (required)
name = "T-overlords"
# This can be set to false to avoid including all the team members in the group
# It's useful if you want to create the group with a different set of members
# It's optional, and the default is `true`.
include-team-members = true
# Include the following extra people in the Zulip group. Their email address
# or Zulip id will be fetched from their TOML in people/ (optional).
extra-people = [
"alexcrichton",
]
# Include the following Zulip ids in the Zulip group (optional).
extra-zulip-ids = [
1234
]
# Include all the members of the following teams in the Zulip group
# (optional).
extra-teams = [
"bots-nursery",
]
# Exclude the following people in the Zulip group (optional).
excluded-people = [
"rylev",
]
```
## Permissions
Permissions can be applied either to a single person or to a whole team, and
they grant access to some pieces of rust-lang tooling. The following
permissions are available:
```toml
[permissions]
# All permissions are optional, including the `permissions` section
# Grants access to the @rust-timer GitHub bot
perf = true
# Grants access to the @craterbot GitHub bot
crater = true
# Grants `@bors r+` rights in the repo `rust-lang/some-repo`
bors.some-repo.review = true
# Grants `@bors try` rights in the repo `rust-lang/some-repo`.
# This is a subset of `bors.some-repo.review`, so this shouldn't
# be set if `review` is also set.
bors.some-repo.try = true
```
## Repos
Repos are configured by creating a file in the `repos` folder
under the corresponding org directory. For example, the `rust-lang/rust`
repository is managed by the file "repos/rust-lang/rust.toml".
The following configuration options are available:
```toml
# The org this repo belongs to (required)
org = "rust-lang"
# The name of the repo (required)
name = "my-repo"
# A description of the repo (required)
description = "A repo for awesome things!"
# The bots that this repo requires (required)
bots = ["bors", "highfive", "rustbot", "rust-timer"]
# The teams that have access to this repo along
# with the access level. (required)
[access.teams]
compiler = "write"
mods = "maintain"
# The protected branches (optional)
[[branch]]
# The name of the branch (required)
name = "master"
# Which CI checks to are required for merging into (optional)
ci-checks = ["CI"]
# Whether new commits after a reviewer's approval of a PR
# merging into this branch require another review.
# (optional - default `false`)
dismiss-stale-review = false
```