Skip to content

Releases: exercism/configlet

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

4.0.0-beta.4

01 Jun 05:18
5a2937d
Compare
Choose a tag to compare

This is a small release to make configlet sync correctly update
metadata in an edge case.

If a source or source_url key/value pair was removed from an
exercise's metadata.toml file in exercism/problem-specifications,
configlet sync -u would incorrectly set an existing corresponding
.meta/config.json value to the empty string.

This would cause configlet lint to indicate an error, because
a source value must be a non-blank string, and a source_url value
must be a URL.

With this release, configlet sync -u will now remove any source or
source_url key/value pair that was removed in prob-specs.

You should upgrade to this configlet release to correctly update the
metadata of a pre-existing grade-school exercise (due to
exercism/problem-specifications@05999f3).

If you have already used a previous configlet version to update those
metadata, please remove the source_url key/value pair of
grade-school manually.

Bug fixes

  • 62cb57b sync: remove source or source_url if removed in prob-specs (#609)

4.0.0-beta.3

20 May 14:01
8ee6b5d
Compare
Choose a tag to compare

This release makes configlet info work more like configlet sync, using the
cached problem-specifications repo that configlet sync has used since
configlet 4.0.0-beta.1.

So configlet info now uses prob-specs data that is updated at run time, rather
than compile time, and the command gains an -o, --offline option. Previously,
configlet info used problem-specifications data that we baked into the binary.

Enhancements

Bug fixes

  • 4e06d08 exec: remove trailing slash from to-be-cloned URL (#600)

Internal

Full Changelog: 4.0.0-beta.2...4.0.0-beta.3