Releases: exercism/v2-configlet
Fix bugs in ExerciseMetadata for `fmt` command
This release fixes two fields in the exercises
metadata in the track config.
- Changes the type of the
checklist_issue
to anint
(it's not a string) - Adds a boolean field,
auto_approve
. The v2 site has been operating with an assumption that it is there, defaulting to false where missing (which is everywhere). It also had a hack to set all thehello-world
exercises totrue
in the database.
Fix bugs in `fmt` command
This patch release fixes three important problems with the fmt
command. It:
- ensures that the config files end with a newline (for POSIX compliance)
- distinguishes between null lists (maintainers have not yet considered values) vs empty lists (maintainers have decided no values are applicable)
- applies consistent ordering to maintainer config files
Update fmt command to apply a definite ordering
This release changes the behavior of the fmt
command so that it enforces a set ordering when formatting a track's master configuration file config.json
. Meaning it will no longer alphabetize JSON keys, but instead adhere to the ordering specified in
exercism/meta#95 (comment)
For more information on changes within this release see CHANGELOG
General enhancements to Configlet
This release introduces a number of enhancements to the lint
command, along with a new upgrade
command for updating a running version of Configlet to its latest available release.
Lint Enhancements
- lint now validates that bonus exercises are set to be unlocked by core, track implemented, exercises.
- lint will ignore unsupported exercise directory names (i.e directory names beginning with a
.(dot) or _(underscore)
)
Upgrade Command
The upgrade
command downloads and installs the latest released version of configlet. The version command has a new latest flag configlet version -l
that can be used to check for the latest available version.
For more information on changes within this release see CHANGELOG
Add check for README to lint command
As of this release, an accompanying README must be provided for each of the implemented exercises within a given track. Any exercise(s) missing a README will be considered incomplete and will fail to lint. This change is in preparation for Exercism V2, as automatic README generation via Trackler will no longer be supported.
For more information on changes within this release see CHANGELOG
Critical fix to the uuid subcommand
The previous version of configlet uuid
was known to generate invalid UUIDs, as described in issue exercism/configlet#99. This release fixes the issue by replacing the core UUID generation library with google/uuid.
For more information on changes within this release see CHANGELOG
Add tree command
A track's configuration file can be hard to review, especially the new structure being used for Nextercism. The tree
command reads in a track's config.json
file and outputs a hierarchy-based view, much like the Unix tree command, for the exercises implemented within the given track.
$ configlet tree path/to/track [--with-difficulty]
For more information on changes within this release see CHANGELOG
Fixes the exit status for lint when given a track containing malformed JSON
Running lint on a track with a malformed JSON configuration file will result in a zero exit status, even though the lint command reports an error. This release fixes the said issue and ensures that a zero exit status is only returned for a valid track that has passed all lint checks.
Add UUID verification to the lint command
This release adds three pieces of behavior to the lint command:
- verify that each exercise, including deprecated, has a defined UUID within its track's config.json.
- verify that each exercise has a unique UUID within its track's config.json; outputting one lint error for each set of duplicated UUIDs.
- verify that each exercise has a unique UUID across all of Exercism's tracks, by remotely verifying all exercise UUIDs against the Exercism UUID verification service.
The remote, HTTP-based, UUID verification process can be disabled at runtime with the --no-http
flag.
$ configlet lint path/to/track --no-http
Add fmt command
The fmt
command will reformat/normalize the track's config.json
file, as well as the maintainers.json
file.