Skip to content

Releases: exercism/configlet

4.0.0-beta.14

18 Aug 06:52
dca4119
Compare
Choose a tag to compare

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

09 Aug 10:58
6d0319a
Compare
Choose a tag to compare

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).

Commits: 6c9f1ba, 512e646.

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, not pragmagic/uuids (#777)

Full Changelog: 4.0.0-beta.12...4.0.0-beta.13

4.0.0-beta.12

18 Jul 08:24
18d9098
Compare
Choose a tag to compare

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

13 Apr 23:10
e528c5b
Compare
Choose a tag to compare

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

23 Mar 07:59
85745ac
Compare
Choose a tag to compare

Bug fixes

  • 3dabaff generate: don't move link reference definition out of block (#738)

Full Changelog: 4.0.0-beta.9...4.0.0-beta.10

4.0.0-beta.9

15 Dec 18:28
f8d86a3
Compare
Choose a tag to compare

New features

  • abf415a fmt, lint: support icon key in practice exercise config.json (#716)
  • c7b14f7 fmt, lint: support representer key in exercise config.json (#715)

Other user-facing changes

  • 84ac6ef .github(workflows), nimble: bump Nim from 1.6.8 to 1.6.10 (#707)

Full Changelog: 4.0.0-beta.8...4.0.0-beta.9

4.0.0-beta.8

11 Nov 19:00
2ea4096
Compare
Choose a tag to compare

New features

  • 8907279 lint: add initial checks for approaches and articles (#704)

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

27 Oct 21:27
b7d44f6
Compare
Choose a tag to compare

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

11 Oct 16:34
794e5dd
Compare
Choose a tag to compare

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:

  1. Add that directory to your fpath. In your .zshrc:
fpath=(~/foo/zsh-completions $fpath)
  1. Or add a symlink to that file in a place that zsh looks for completions (run echo $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:

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

01 Jul 23:42
6ae8274
Compare
Choose a tag to compare

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

  • ef65ef9 generate: demote headings, and group link reference definitions (#620)

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