Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ that address issues outside the core GraphQL specifications.

- **Editor** — a person with write access to this repository
([@graphql/gaps-editors](https://github.com/orgs/graphql/teams/gaps-editors)),
approved by the TSC to administer the GAP program. _Editors_ configure
`CODEOWNERS` and merge PRs.
approved by the TSC to administer the GAP program.
- **Sponsor** — an _editor_ assigned to a GAP who is responsible for approving
the initial contents. A _sponsor_ may also be an _author_.
- **Author** — a person (or people) who have made significant contributions to a
Expand Down Expand Up @@ -40,8 +39,11 @@ gauge public interest, but doing so is not necessary.
point to the PR.
4. Ping `@graphql/gaps-editors` to find a sponsor, add them to `metadata.yml`.

Once approved by the _authors_ and _sponsor_, `CODEOWNERS` will be updated and
the PR will be merged.
Once approved by the _authors_ and _sponsor_, the PR should be merged by the
_sponsor_.

`CODEOWNERS` will automatically be updated allowing _authors_ to merge future
contributions to their GAP.

> [!IMPORTANT]
> GAP numbers never change. If a proposal needs significant changes, create a
Expand Down
16 changes: 1 addition & 15 deletions scripts/validate-structure.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,28 +95,14 @@ function validateMetadata(dirPath, gapName) {
error(gapName, `metadata.yml validation failed:\n\n${errors}`);
}

// Validate authors have valid email and githubUsername
// Validate authors have valid email
for (const author of metadata.authors) {
if (!validator.isEmail(author.email)) {
error(
gapName,
`metadata.yml invalid author email "${author.email}" for "${author.name}"`,
);
}
if (!author.githubUsername.startsWith("@")) {
error(
gapName,
`metadata.yml author githubUsername must start with @ (got "${author.githubUsername}" for "${author.name}")`,
);
}
}

// Validate sponsor starts with @
if (!metadata.sponsor.startsWith("@")) {
error(
gapName,
`metadata.yml sponsor must be a GitHub username starting with @ (got "${metadata.sponsor}")`,
);
}

// Validate discussion is a valid URL
Expand Down
Loading