Skip to content

Commit

Permalink
configlet: specify that non-empty strings should also be non-blank
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikSchierboom committed Feb 4, 2021
1 parent 528a4eb commit e0336f9
Showing 1 changed file with 21 additions and 21 deletions.
42 changes: 21 additions & 21 deletions anatomy/tracks/configlet/linting.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ The `config.json` file should have the following checks:

- The file must be valid JSON
- The `"language"` key is required
- The `"language"` value must be a non-empty string
- The `"language"` value must be a non-empty, non-blank string
- The `"slug"` key is required
- The `"slug"` value must be a non-empty, lowercased string using kebab-case
- The `"slug"` value must be a non-empty, non-blank, lowercased string using kebab-case
- The `"active"` key is required
- The `"active"` value must be a boolean
- The `"blurb"` key is required
- The `"blurb"` value must be a non-empty string
- The `"blurb"` value must be a non-empty, non-blank string
- The `"version"` key is required
- The `"version"` value must be the integer `3`
- The `"status.concept_exercises"` key is required
Expand All @@ -72,24 +72,24 @@ The `config.json` file should have the following checks:
- The `"exercises.concept"` key is required
- The `"exercises.concept"` value must be an array
- The `"exercises.concept[].slug"` key is required
- The `"exercises.concept[].slug"` value must be a non-empty, lowercased string using kebab-case
- The `"exercises.concept[].slug"` value must be a non-empty, non-blank, lowercased string using kebab-case
- The `"exercises.concept[].slug"` value must be unique in `"exercises.concept[].slug"` and may not exist in `"exercises.practice[].slug"`
- The `"exercise.concept[].name"` key is required
- The `"exercise.concept[].name"` value must be a non-empty string
- The `"exercise.concept[].name"` value must be a non-empty, non-blank string
- The `"exercise.concept[].uuid"` key is required
- The `"exercise.concept[].uuid"` value must be a unique, lowercased v4 UUID string
- The `"exercise.concept[].deprecated"` key is optional
- The `"exercise.concept[].deprecated"` value must be a boolean value
- The `"exercise.concept[].deprecated"` value must generate a warning if set to `false`
- The `"exercise.concept[].concepts"` key is required
- The `"exercise.concept[].concepts"` value must be a non-empty array of strings
- The `"exercise.concept[].concepts"` values must be non-empty, lowercased strings using kebab-case
- The `"exercise.concept[].concepts"` values must be non-empty, non-blank, lowercased strings using kebab-case
- The `"exercise.concept[].concepts"` values must not have duplicates
- The `"exercise.concept[].concepts"` values must not be in any other concept exercise's `"concepts"` property
- The `"exercise.concept[].concepts"` values must match the `"concepts.slug"` property of one of the concepts
- The `"exercise.concept[].prerequisites"` key is required
- The `"exercise.concept[].prerequisites"` value must be a non-empty array of strings for all but one exercise, which can have an empty array as its value
- The `"exercise.concept[].prerequisites"` values must be non-empty, lowercased strings using kebab-case
- The `"exercise.concept[].prerequisites"` values must be non-empty, non-blank, lowercased strings using kebab-case
- The `"exercise.concept[].prerequisites"` values must not have duplicates
- The `"exercise.concept[].prerequisites"` values must match any other concept exercise's `"concepts"` property values
- The `"exercise.concept[].prerequisites"` values must not match any of the values in the exercise's `"exercise.concept[].concepts"` property
Expand All @@ -100,10 +100,10 @@ The `config.json` file should have the following checks:
- The `"exercises.practice"` key is required
- The `"exercises.practice"` value must be an array
- The `"exercise.practice[].slug"` key is required
- The `"exercise.practice[].slug"` value must be a non-empty, lowercased string using kebab-case
- The `"exercise.practice[].slug"` value must be a non-empty, non-blank, lowercased string using kebab-case
- The `"exercise.practice[].slug"` value must be unique in `"exercises.practice[].slug"` and may not exist in `"exercises.concept[].slug"`
- The `"exercise.practice[].name"` key is required
- The `"exercise.practice[].name"` value must be a non-empty string
- The `"exercise.practice[].name"` value must be a non-empty, non-blank string
- The `"exercise.practice[].uuid"` key is required
- The `"exercise.practice[].uuid"` value must be a unique, lowercased v4 UUID string
- The `"exercise.practice[].deprecated"` key is optional
Expand All @@ -113,27 +113,27 @@ The `config.json` file should have the following checks:
- The `"exercise.practice[].difficulty"` value must be an integer >= 0 and <= 10
- The `"exercise.practice[].prerequisites"` key is required
- The `"exercise.practice[].prerequisites"` value must be a non-empty array of strings
- The `"exercise.practice[].prerequisites"` values must be non-empty, lowercased strings using kebab-case
- The `"exercise.practice[].prerequisites"` values must be non-empty, non-blank, lowercased strings using kebab-case
- The `"exercise.practice[].prerequisites"` values must not have duplicates
- The `"exercise.practice[].prerequisites"` values must match any concept exercise's `"exercise.concept[].concepts"` values
- The `"exercise.practice[].prerequisites"` values must match the `"concepts.slug"` property of one of the concepts
- The `"exercise.practice[].status"` key is optional
- The `"exercise.practice[].status"` value must be the string `wip`, `beta`, `active` or `deprecated`
- The `"exercises.foregone"` key is optional
- The `"exercises.foregone"` value must be a non-empty array of strings
- The `"exercises.foregone"` values must be non-empty, lowercased strings using kebab-case
- The `"exercises.foregone"` values must be non-empty, non-blank, lowercased strings using kebab-case
- The `"exercises.foregone"` values must not match any of the concept or practice exercise slugs
- The `"concepts"` key is required
- The `"concepts"` value must be an array
- The `"concepts"` value must have a entry with a matching `"slug"` property for each concept listed in a concept exercise's `"concepts"` property
- The `"concepts[].uuid"` key is required
- The `"concepts[].uuid"` value must be a unique, lowercased v4 UUID string
- The `"concepts[].slug"` key is required
- The `"concepts[].slug"` value must be a non-empty, lowercased string using kebab-case
- The `"concepts[].slug"` value must be a non-empty, non-blank, lowercased string using kebab-case
- The `"concepts[].name"` key is required
- The `"concepts[].name"` value must be a non-empty, titleized string
- The `"concepts[].name"` value must be a non-empty, non-blank, titleized string
- The `"concepts[].blurb"` key is required
- The `"concepts[].blurb"` value must be a non-empty string
- The `"concepts[].blurb"` value must be a non-empty, non-blank string
- Each `"concepts"` value must have a `concept/<concepts.slug>/about.md` file. Linting rules for this file are specified below.
- Each `"concepts"` value must have a `concept/<concepts.slug>/introduction.md` file. Linting rules for this file are specified below.
- Each `"concepts"` value must have a `concept/<concepts.slug>/links.json` file. Linting rules for this file are specified below.
Expand All @@ -142,9 +142,9 @@ The `config.json` file should have the following checks:
- The `"key_features[].icon"` key is required
- The `"key_features[].icon"` value must be a string that matches one of the pre-defined icon values (TODO: add link to list of icons)
- The `"key_features[].title"` key is required
- The `"key_features[].title"` value must be a non-empty string with length <= 25
- The `"key_features[].title"` value must be a non-empty, non-blank string with length <= 25
- The `"key_features[].content"` key is required
- The `"key_features[].content"` value must be a non-empty string with length <= 100
- The `"key_features[].content"` value must be a non-empty, non-blank string with length <= 100
- The `"tags"` key is optional
- The `"tags"` value must be a non-empty array of strings
- The `"tags"` values must use one of the [pre-defined tag values](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/config-json.md#tags)
Expand All @@ -156,18 +156,18 @@ The `config.json` file should have the following checks:
- The `"authors"` key is required
- The `"authors"` value must be an non-empty array
- The `"authors[].github_username"` key is required
- The `"authors[].github_username"` key must be a non-empty string
- The `"authors[].github_username"` key must be a non-empty, non-blank string
- The `"authors[].github_username"` value is treated case-insensitively
- The `"authors[].exercism_username"` key is required
- The `"authors[].exercism_username"` key must be a non-empty string
- The `"authors[].exercism_username"` key must be a non-empty, non-blank string
- The `"authors[].github_username"` value is treated case-insensitively
- The `"contributors"` key is optional
- The `"contributors"` value must be an array
- The `"contributors[].github_username"` key is required
- The `"contributors[].github_username"` key must be a non-empty string
- The `"contributors[].github_username"` key must be a non-empty, non-blank string
- The `"contributors[].github_username"` value is treated case-insensitively
- The `"contributors[].exercism_username"` key is required
- The `"contributors[].exercism_username"` key must be a non-empty string
- The `"contributors[].exercism_username"` key must be a non-empty, non-blank string
- The `"contributors[].exercism_username"` value is treated case-insensitively
- Users can only be listed in either the `"authors"` or `"contributors"` array (no overlap)
- The `"files.solution"` key is required
Expand Down Expand Up @@ -238,6 +238,6 @@ The `config.json` file should have the following checks:
- The `"[].url"` property is required
- The `"[].url"` value must be an URL
- The `"[].description"` property is required
- The `"[].description"` value must be a non-empty string
- The `"[].description"` value must be a non-empty, non-blank string
- The `"[].icon_url"` property is optional
- The `"[].icon_url"` value must be an URL

0 comments on commit e0336f9

Please sign in to comment.