Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[v3] Prepare for v3 #316

Merged
merged 49 commits into from
Jan 30, 2021
Merged

[v3] Prepare for v3 #316

merged 49 commits into from
Jan 30, 2021

Conversation

ErikSchierboom
Copy link
Member

This issue is part of the migration to v3. You can read full details about the various changes here.

This PR prepares the track for Exercism v3, which will be different in a number of ways from Exercism v2.

As having this PR merged is essential to prepare this track for Exercism v3, we'll automatically merge this PR one week after it was opened (if it hasn't been merged already).

In this PR, the following changes are made:

v2 file migration

  1. Move the existing exercises in the exercises directory to the exercises/practice directory

v3 file migration

  1. Copy the v3 languages/<slug>/concepts directory to the concepts directory
  2. Copy the v3 languages/<slug>/exercises/concept directory to the exercises/concept directory
  3. Copy the v3 languages/<slug>/reference directory to the reference directory
  4. Copy the v3 languages/<slug>/docs directory to the docs directory

Notes

Any commits modifying the aforementioned directories (or any of their files) are included in the PR, except for:

  • The _sidebar.md files are not migrated
  • The README.md file at the v3 track's root is not migrated.
  • The maintainers.md file is not migrated.

config.json migration

The config.json file is updated to conform to the v3 spec.

  1. Add a version property:
"version": 3
  1. Add online editor settings:
"online_editor": {
  "indent_style": "space",
  "indent_size": 2
}
  1. Rename the "exercises" property to "practice"

  2. Create an "exercises" property and move the "practice" property to this property:

"exercises": {
  "practice": [
    ...
  ]
}
  1. Remove the "core", "auto_approve", and "unlocked_by" properties from the practice exercises

  2. Add the "name" property to the practice exercises and pre-populate this with a titlelized version of the "slug" property

  3. Add the "prerequisites" property to the practice exercises and set it to an empty array

  4. Add an empty "concept" array property to the "exercises" property

"exercises": {
  "concept": [],
  "practice": [
    ...
  ]
}
  1. Move the "foregone" property to the "exercises" key:
"exercises": {
  ...
  "foregone": [...]
}
  1. Add a top-level "concepts" key, which is an array:
"concepts": []
  1. Add a top-level "tags" key, which is an array:
"tags": []
  1. Add a top-level "key_features" key, which is an array:
"key_features": []
  1. Add a top-level "status" key, which is an object containing properties with boolean values indicating if a v3 feature is implemented:
"status": {
  "concept_exercises": true,
  "test_runner": true,
  "representer": false,
  "analyzer": false
}
  1. Add a top-level "slug" key, which is a string containing the track's slug:
"slug": "csharp"
  1. Re-order the practice exercises using the following ordering:

    1. Core exercises, retaining their existing ordering
    2. Non-core exercises, ordered by the order of the core exercise that unlocks them, then by difficulty and then alphabetically.
    3. Bonus exercises, ordered by difficulty then alphabetically.
  2. Add the "status" key with a value of "deprecated" to practice exercises that have "deprecated" set to true. The deprecated field itself is removed:

{
  "slug": "octal",
  "name": "Octal",
  "uuid": "f29f9e56-c79b-4ae4-a0d0-29db78c677e4",
  "prerequisites": [],
  "difficulty": 0,
  "topics": ["integers"],
  "status": "deprecated"
}

Notes

  • Settings defined in the v3 config.json file will take precedence over their v2 config.json file's equivalent.

configlet

  1. Update the fetch-configlet and fetch-configlet.ps1 files to the latest version of configlet, which can work with v3 tracks.

Continuous integration

  1. Add a GitHub Actions workflow to verify the track using the configlet-CI GitHub Action, unless there already is a file named .github/workflows/configlet.md.

  2. Add a dependabot configuration to automatically submit PRs for any new versions of external workflows used in this track's GitHub Action workflows.

  3. Convert any Exercism GitHub Actions workflows being used to use main as their branch instead of master. See this issue.

Follow-up steps

We've created issues in this repo for the follow-up steps to get this track ready for v3.

Tracking

exercism/v3-launch#11

mpizenberg and others added 30 commits January 29, 2021 14:38
* [Docs] Move implementing-a-concept-exercise.md to reference folder
* [Docs] Move reference documents to docs folder
* [Docs] Update to student-facing docs
* [Docs] Add new issue template

Co-Authored-By: Jeremy Walker <jez.walker@gmail.com>
Co-Authored-By: Victor Goff <keeperotphones@gmail.com>
Co-authored-by: Sascha Mann <git@mail.saschamann.eu>
* Add instructions for implementing a concept exercise in elm

* Update links

* Remove pipe

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* User "student" instead of "user"

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* Update step 1 with latest copy

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* User "student" instead of "user"

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* Quote file names

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* Remove copy that implies a representer is optional

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* Remove copy that implies an analyser is optional

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

* Remove generic copy that isn't relevant for specific tracks

Co-Authored-By: Erik Schierboom <erik_schierboom@hotmail.com>

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>
[Docs] Clarify syntax in introduction document

Co-Authored-By: Jeremy Walker <jez.walker@gmail.com>
The after.md document should include newly introduced syntax.
Co-authored-by: Sascha Mann <git@mail.saschamann.eu>
Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>
[Docs] Add reference to required reading in implementing guide
[Docs] Add reference to Concept Exercise Anatomy video
[Docs] Cross-reference concept exercise file information
[Docs] Add description of concept documents

Co-authored-by: Jeremy Walker <jez.walker@gmail.com>
* Kickstart exercices from fsharp/exercises

* Add code / tests for elm basics concept exercise

* Add explanatory comments around code options

* Add example solution to Elm basics exercise

* Update design document / rationale for elm basics exercise

* Add remaning documentation for elm basics exercise

* Add elm reference readme

I'm not sure I understand the point of listing out the concepts again (the graph in the overall readme seems a better way to represent this). But here it is.

* Add basics exercise to config.json

* Update instructions for implementing a concept exercise

* Update cli instructions

* Use standard single quote

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Remove empty line

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Correctly close square bracket

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Prefix hints with a dash

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Match title to exercise concept

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Use standard single quote

Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>

* Remove after.md, which is no longer used

* Update exercise slug and name to reflect the story/theme

* Remove links from introduction

* Remove function stub from initial module

* basics: change module explanation

* basics: use more familiar List functions

* basics: adapt the Functions section, remove notion of type

* basics: use the add function for indentation example

* basics: simpler multi-line comment

* basics: small content adjustment

* basics: remove links

* basics: remove imports section

* basics: re-title Elm syntax basics

* basics: change Greet to Count

* basics: update slug and concept description

* basics: give hint with link to number operators

* basics: update concepts readme

* basics: reorganize about.md

* basics: move basics concept exercise

* basics: update again about.md

* basics: update introduction.md

* basics: update instructions.md

* basics: add cedd to authors

* basics: update design.md

* basics: update example

* basics: update code template

* basics: update test

* basics: update reference on implementing a concept

basics: prettier elm.json

basics: prettier readme

basics: prettier cli

basics: prettier implementing ...

basics: reference readme remove old section

basics: fix slug in config.json

* update basics concept exercise config.json

Co-authored-by: ceddlyburge <ceddlyburge@gmail.com>
Co-authored-by: Cedd Burge <ceddlyburge@users.noreply.github.com>
Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>
* Add concept introductions

* [CI] Format code

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Rename example files to exemplar

See exercism/docs#23

* [Docs] Correct .meta/example references to .meta/exemplar

* [Docs] Use exemplar instead of example

* [Docs] Update example name in file listings

* [Julia] Convert to exemplar.jl

* Rename .meta/Cook.elm to .meta/Examplar.elm

* Rename .meta/Examplar.elm .meta/Exemplar.elm

Co-authored-by: Matthieu Pizenberg <matthieu.pizenberg@gmail.com>
* Convert editor key to files

* Add missing "files" field to .meta/config.json files

* Add exemplar files to .meta/config.json

* Add common-lisp exemplar to template
Copy link
Member

@mpizenberg mpizenberg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, I've fixed the few things in exercises and testing that needed changes and now I think it's ready to merge.

This was referenced Jan 30, 2021
@mpizenberg
Copy link
Member

Most things seem in order and the things left can be changed later so I'm gonna merge this one. @ceddlyburge if you have any remark, don't hesitate and we can fix it up post-merge :)

@mpizenberg mpizenberg merged commit 9845621 into exercism:main Jan 30, 2021
@ErikSchierboom ErikSchierboom added the x:size/tiny Tiny amount of work label Oct 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
x:size/tiny Tiny amount of work
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants