This provides additional subcommands that I find useful to improve my experience working locally.
(~)$ cd (exercism workspace)
(~/s/e/exercism)$ cd wren # working on the wren track
(~/s/e/e/wren)$ exercism exercises # I've _almost_ finished it
+----------------------------+----------------------------+------------+-----------+
| title | slug | difficulty | status |
+----------------------------+----------------------------+------------+-----------+
| Clock (*) | clock | easy | |
+----------------------------+----------------------------+------------+-----------+
+-----------+-------+
| completed | total |
+-----------+-------+
| 61 | 62 |
+-----------+-------+
(~/s/e/e/wren)$ exercism download -e clock # `-t wren` not required
(~/s/e/e/w/clock)$ #...edit/test...
(~/s/e/e/w/clock)$ exercism submit
(~/s/e/e/w/clock)$ exercism open # see how it looks online
(~/s/e/e/w/clock)$ exercism publish # Done!
All gloriously tab-completed.
download
- after downloading, cd to the solution directory
- you can omit the
--track
option if the function can figure it out - use the
--recommended
option to download the next recommended exercise (usually the first "available" exercise in the track)
test
- run test suite for this exercise
- enhances the builtin
exercism test
with some custom behaviour for some tracks.
submit
- with no arguments, uploads the solution file from .exercism/config.json
open
- open your solution's iterations page in a browser
check
,format
- run formatters and/or linters for this exercise
- only some tracks currently supported
- "format" is an alias for "check"
publish
- mark the exercise as complete, and enables comments on the public solution
refresh
- re-download the current solution (based on $PWD)
- I use this mainly to refresh the .exercism/ directory
square1
- Destroy your current solution (!) and reset it back to its initial contents
iterations
- list the iterations for one or all solutions in a track
last-test-run
- show the data about the test run of the last iteration.
metadata
- a dump of the exercism backend's data about an exercise
bulk-download
- bulk download all your solutions for a track.
- handy for those who store their solutions in a git repo.
sync
- updates the exercise
- this is like clicking "See what's changed" in the "This exercise has been updated..." banner, then clicking the "Update exercise" button
- requires the presence of the .exercism/ directory: you may need to
exercism refresh
first
- updates the exercise
test-all
- run test suite for all downloaded exercise in a track
- only some tracks currently supported (the ones I've joined)
cleanup
- cleanup build artifacts from track exercises
- useful to remove huge node_modules subdirectories (unless you use pnpm)
- not all tracks supported
tracks
- list all Exercism tracks, and your progress through each.
exercises
- list the exercises, and your progress, for a track.
syllabus
- create a
_concepts
directory for a track, linking the Concept name to the exercise's README.
- create a
by-exercise
- create a
_by_exercise
directory mapping exercises you've completed to the tracks you've completed them in.
- create a
achievements
- list your track trophies and badges
notifications
- list recent notifications
reputation
- recently awarded reputation
This subcommand is itself subdivided.
mentoring queue
- show your current mentoring queue, sorted by age
mentoring request
- display a summary of a mentoring request
- it is necessary to call
mentoring queue
first
mentoring inbox
- list the discussions in your mentoring workspace
mentoring discussion
- display the posts of the discussion
- it is necessary to call
mentoring inbox
first - options exist to post to the thread, and to end the discussion.
mentoring overview
- display your unread notifications, mentoring queue and inbox.
dev unimplemented
- lists unimplemented, foregone or deprecated exercises.
github teams
- lists the teams you're a member of.
github team
- lists the members of a team.
github prs
- lists my open Exercism PRs
github issues
- lists my open Exercism issues
Add to ~/.config/fish/config.fish
:
set exercism_wrapper_home /path/to/the/exercism/wrapper/root
if not contains $exercism_wrapper_home/functions $fish_function_path
set fish_function_path $exercism_wrapper_home/functions $fish_function_path
end
if not contains $exercism_wrapper_home/completions $fish_complete_path
set fish_complete_path $exercism_wrapper_home/completions $fish_complete_path
end
set -e exercism_wrapper_home
- exercism and fish of course!
- curl
- jq
- miller
- to print tables with pretty boxes.
- pup for parsing HTML (like jq for HTML)
- for
mentoring discussions
rendering of posts:- ruby
- colorize gem
- @html-to/text-cli npm package
- gh for the Github queries
Assuming fish and Homebrew are already installed:
brew install exercism curl jq miller node gh
gem install colorize
npm install --global '@html-to/text-cli'
go install 'github.com/ericchiang/pup@latest'