Releases: exercism/configlet
4.0.0-beta.14
Releases
Previous configlet releases provided pre-built configlet executables only for these targets:
- x86_64 Linux
- x86_64 macOS
- x86_64 Windows
This release adds these new targets:
- arm64 Linux
- arm64 macOS
- arm64 Windows
- riscv64 Linux
But note that we have not yet updated the fetch-configlet
scripts Exercism-wide to support these new targets.
User-facing commits:
- 0e8d665 .github, config: use Zig to cross-compile arm64 Linux asset (#460)
- f280445 .github: cross-compile arm64 macOS asset (#796)
- a962b18 .github: cross-compile riscv64 Linux asset (#798)
- 3824299 .github, cli, completion: cross-compile arm64 Windows asset (#797)
Full Changelog: 4.0.0-beta.13...4.0.0-beta.14
4.0.0-beta.13
configlet create
This release adds a new command: configlet create
. Currently this can only create an approach or article, with the usage:
configlet create --exercise <slug> --approach <slug>
configlet create --exercise <slug> --article <slug>
But in a future version, it will probably gain the ability to create other things (such as an exercise).
configlet lint
The online_editor.highlightjs_language
key/value pair in the track config.json
file is now optional (075ecd8).
Releases
We now sign configlet release archives. For more details, see the new Verifying section of the repo README.md
, and 009dc9d.
Internal
Most notably:
- fa7d0bb .github, config, json, nimble: bump Nim from 1.6.12 to 2.0.0 (#723)
- 7471af3 nimble, patches, cli: vendor
parseopt3
dependency (#780) - 53a75a2 nimble, uuid: generate UUIDs via
std/sysrand
, notpragmagic/uuids
(#777)
Full Changelog: 4.0.0-beta.12...4.0.0-beta.13
4.0.0-beta.12
Enhancements
- d2e04a5 lint(track_config): change
average_run_time
from float to int (#765) - 1c020ea cli, README: fix description of fmt (#750)
Full Changelog: 4.0.0-beta.11...4.0.0-beta.12
4.0.0-beta.11
New features
Before this release, configlet fmt
only operated on exercise .meta/config.json
files.
With this release, configlet fmt
also operates on exercise .approaches/config.json
and .articles/config.json
files.
Full Changelog: 4.0.0-beta.10...4.0.0-beta.11
4.0.0-beta.10
Bug fixes
Full Changelog: 4.0.0-beta.9...4.0.0-beta.10
4.0.0-beta.9
New features
- abf415a fmt, lint: support
icon
key in practice exerciseconfig.json
(#716) - c7b14f7 fmt, lint: support
representer
key in exerciseconfig.json
(#715)
Other user-facing changes
Full Changelog: 4.0.0-beta.8...4.0.0-beta.9
4.0.0-beta.8
New features
Other user-facing changes
- 57e6c5f .github, fetch-configlet: rename release assets (#705)
- 013c66b fetch-configlet: make some variables local (#691)
- 5f5b54d fetch-configlet: print success message (#689)
- b6fff14 configlet: catch every
CatchableError
(#697)
Full Changelog: 4.0.0-beta.7...4.0.0-beta.8
4.0.0-beta.7
This release improves the behavior of configlet sync
.
sync: always add include = false
when appropriate
When updating and including new test cases with
configlet sync -u --tests include
configlet will now add include = false
to any test that was reimplemented by a just-added test.
That was already the behavior when updating tests interactively, and answering yes:
yes | configlet sync -u --tests
sync: ignore track-deprecated practice exercises
configlet sync
no longer reports (or updates) a practice exercise that is both unsynced and deprecated on the track.
Note that it still operates on practice exercises that are only deprecated in problem-specifications
.
User-facing commits
The important fixes mentioned above:
- ac74536 sync: make
--tests include
exclude reimplemented tests (#680) - 891c626 sync: ignore track-deprecated practice exercises (#682)
This release also improves some error messages:
- 3457c09 sync, info: improve error message for cache update failure (#684)
- 9b75bd7 sync: improve error messages for invalid update options (#679)
Full Changelog: 4.0.0-beta.6...4.0.0-beta.7
4.0.0-beta.6
The main news in this release: configlet now has shell completion scripts, and they're distributed with configlet itself.
New features
This release adds a new command: configlet completion
. Running it like
configlet completion --shell bash|fish|zsh
will output the specified completion script to stdout.
Below are some basic instructions on enabling completions for configlet. Please consult the documentation for your shell for more details.
Enable completions for bash
For the current shell:
source <(configlet completion --shell bash)
Enable completions for fish:
For the current user:
configlet completion --shell fish > ~/.config/fish/completions/configlet.fish
Enable completions for zsh
Write the _configlet
script to a directory of your choice (here, ~/foo/zsh-completions
):
mkdir -p ~/foo/zsh-completions
configlet completion --shell zsh > ~/foo/zsh-completions/_configlet
and then either:
- Add that directory to your
fpath
. In your.zshrc
:
fpath=(~/foo/zsh-completions $fpath)
- Or add a symlink to that file in a place that
zsh
looks for completions (runecho $fpath
to see them). For example:
$ echo $fpath
/usr/local/share/zsh/site-functions /usr/share/zsh/site-functions [...]
$ sudo mkdir -p /usr/local/share/zsh/site-functions
$ sudo ln -s ~/foo/zsh-completions/_configlet /usr/local/share/zsh/site-functions/_configlet
Either way, make sure that completions are also enabled in your .zshrc
:
autoload -Uz compinit promptinit
compinit
Then start a new zsh shell, and configlet [Tab]
should work.
Bug fixes
- 1ab75f2 generate: allow a concept slug to contain digits (#664)
- d5f5485 sync: allow passing both
-uy
and--tests include|exclude
(#674)
User-facing changes
Implementation of configlet completion
:
- 690e9e2 completions: add completions for bash and fish (#629)
- d10dcd6 completion: add
configlet completion
subcommand (#631) - e4c8643 completion: add zsh (#653)
Smaller changes:
- 5d98c51 cli: add missing dot in help message (#644)
- 77f7fbf completions: make
uuid -n
expect an argument (#643) - 4447bd2 completions: support
completion
subcommand (#649) - 1d689ed cli, completion: compress some
const
strings (#652) - 121b40e completions(fish): remove invalid file completions (#656)
- 6b6a780 github(workflows): bump Ubuntu from 20.04 to 22.04 (#590)
- 88046f4 github(workflows): bump macOS from 11 to 12 (#597)
- 5f91265 completions(bash, fish): add zsh completion for -s/--shell (#659)
- f854784 completions(fish): refactor exercise slug completion (#660)
- d7b5178 completions(bash, fish): tweak formatting (#650)
- f4561b0 github(workflows), nimble: bump Nim from 1.6.6 to 1.6.8 (#666)
Full Changelog: 4.0.0-beta.5...4.0.0-beta.6
4.0.0-beta.5
This is an important release for configlet generate
.
Before this release, the implementation of configlet generate
was noticeably incomplete - it could produce files with incorrect heading levels, and ungrouped link reference definitions.
configlet generate
and heading levels
Given a Concept Exercise with an introduction.md.tpl
file like:
# Introduction
## Date and Time
%{concept:date-time}
configlet generate
would write a corresponding introduction.md
file, inserting the introduction for the date-time
Concept. However, the level of an inserted heading was preserved:
# Introduction
## Date and Time
Blah blah.
## A heading from the date-time `introduction.md` file
Blah blah.
With this release, configlet will demote the level of an inserted heading when appropriate:
# Introduction
## Date and Time
Blah blah.
### A heading from the date-time `introduction.md` file
Blah blah.
configlet generate
now also writes the same when given the template structure of:
# Introduction
%{concept:date-time}
That is, it adds a level-2 heading when the placeholder is not already under a level-2 heading - we concluded that this looks better on the website. The heading's contents are taken from the concept's name
in the track-level config.json
file, so you may prefer to omit such level-2 headings in the template file (unless you want the heading contents to be different).
configlet generate
and link reference definitions
This release also fixes configlet's handling of link reference definitions. Consider this introduction.md.tpl
file:
# Introduction
## Foo
%{concept:foo}
## Bar
%{concept:bar}
Before this release, when more than one placeholder had a link reference definition, configlet generate
would produce something like:
# Introduction
## Foo
Here is a line with a link to [Foo][foo].
[foo]: http://www.example.com
## Bar
Here is a line with a link to [Bar][bar].
[bar]: http://www.example.org
That is, it would not combine link reference definitions at the bottom. With this release, it does so - ordering by first usage, and deduplicating them:
# Introduction
## Foo
Here is a line with a link to [Foo][foo].
## Bar
Here is a line with a link to [Bar][bar].
[foo]: http://www.example.com
[bar]: http://www.example.org
The Markdown handling in this release is less robust than @ee7 would like. It should be better soon. But please go forth and use configlet generate
, and open an issue if you find a case where it produces incorrect output. Thanks. Have fun.
Enhancements
Bug fixes
- 96b7d37 sync: remove "Updating tests..." message (#623)
- 3f4193f sync(tests): improve error for invalid TOML (#614)
Full Changelog: 4.0.0-beta.4...4.0.0-beta.5