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 #1073

Merged
merged 102 commits into from
Jan 29, 2021
Merged

[v3] Prepare for v3 #1073

merged 102 commits into from
Jan 29, 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

pvcarrera and others added 30 commits January 29, 2021 15:54
* Strings concept exercise

* Add strings concept exercise to the config.json

* Add String manipulation phrase in the introduction

* Rename class LogLine to module LogLineParser

* Update languages/exercises/concept/strings/.docs/instructions.md

Co-Authored-By: Jeremy Walker <[email protected]>

* Add Ruby implementation to the referece

* Update languages/exercises/concept/strings/.docs/hints.md

Co-Authored-By: Jeremy Walker <[email protected]>

* Update languages/exercises/concept/strings/.docs/hints.md

Co-Authored-By: Jeremy Walker <[email protected]>

* Improve after text

Co-authored-by: Jeremy Walker <[email protected]>
[Docs] Rephrase the design document headers
* [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 <[email protected]>
Co-Authored-By: Victor Goff <[email protected]>
Co-authored-by: Sascha Mann <[email protected]>
Ported from the C# track

* Add concept exercise implementation guide

* Update README status list

* Use string literals instead of HTML entities
* Add Basics exercise

* Update languages/exercises/concept/basics/.docs/introduction.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/instructions.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/instructions.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/hints.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/hints.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/introduction.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Complete basic concept

* Update languages/exercises/concept/basics/.meta/design.md

Co-Authored-By: wolf99 <[email protected]>

* Update languages/config.json

Co-Authored-By: Erik Schierboom <[email protected]>

* Add after.md

* Add myself to the list of contributors

* Update languages/exercises/concept/basics/.docs/after.md

Co-Authored-By: wolf99 <[email protected]>

* Update languages/exercises/concept/basics/.docs/after.md

Co-Authored-By: wolf99 <[email protected]>

* Update languages/exercises/concept/basics/.docs/after.md

Co-Authored-By: wolf99 <[email protected]>

* Update languages/exercises/concept/basics/.docs/introduction.md

Co-Authored-By: Victor Goff <[email protected]>

* Update languages/exercises/concept/basics/.docs/after.md

Co-Authored-By: Victor Goff <[email protected]>

* Update fater.md

* Update languages/exercises/concept/basics/.meta/design.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/config.json

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/README.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/after.md

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/config.json

Co-Authored-By: Erik Schierboom <[email protected]>

* Update languages/exercises/concept/basics/.docs/introduction.md

Co-Authored-By: Jeremy Walker <[email protected]>

* Update languages/exercises/concept/basics/.docs/introduction.md

* Update languages/exercises/concept/basics/.docs/introduction.md

* Clarify wording in after around objects

Co-authored-by: Erik Schierboom <[email protected]>
Co-authored-by: Pablo Vicente <[email protected]>
Co-authored-by: wolf99 <[email protected]>
Co-authored-by: Victor Goff <[email protected]>
Co-authored-by: Sascha Mann <[email protected]>
Co-authored-by: Erik Schierboom <[email protected]>
[Docs] Add reference to required reading in implementing guide
[Docs] Add reference to Concept Exercise Anatomy video
[Docs] Format using Prettier
* Add floats-concept-exercise

* Update languages/exercises/concept/floating-point-numbers/.docs/instructions.md

* Update languages/exercises/concept/floating-point-numbers/.meta/design.md

Co-Authored-By: Victor Goff <[email protected]>

* Update languages/exercises/concept/floating-point-numbers/.docs/after.md

* Update languages/exercises/concept/floating-point-numbers/.docs/instructions.md

* Update

* Add `loop` loop and rename concept from while-loops to loops

* Update languages/exercises/concept/floating-point-numbers/.docs/after.md

* Update example

* Add examples for loops

* Fix prettier checks

Co-authored-by: Victor Goff <[email protected]>
Co-authored-by: Jeremy Walker <[email protected]>
[Docs] Cross-reference concept exercise file information
It seems that we accidentally leaked out constants into the stub. This removes them.
* Add ruby numbers concept exercise

* Add floating-point-numbers to ruby lang config.json

* Remove private keyword from example

* Minor changes
* Concept Exercise: arrays
Introduces `instance-variables` exercise, see design.md.

Co-authored-by: Victor Goff <[email protected]>
Co-authored-by: Jeremy Walker <[email protected]>
Introduces `booleans` exercise, see design.md for details.

Co-authored-by: Victor Goff <[email protected]>
Co-authored-by: Jeremy Walker <[email protected]>
* Remove booleans from numbers

* Add original PR contributors

* Remove basics concept from prerequisites
* Normalize naming for method references

* Add some missed methods in the instructions.md
It now follows the same format as the other instruction files for Ruby.
ErikSchierboom and others added 28 commits January 29, 2021 15:54
* fix(booleans): remove if/else unless from concept
* prettier, update name of exercise

Co-authored-by: Tim Austin <[email protected]>
* Implement new Concept Exercise: conditionals-ternary #1903

* Use American English

* [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

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

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

Co-authored-by: Matthieu Pizenberg <[email protected]>
* 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
@iHiD iHiD merged commit a22f64a into exercism:main Jan 29, 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.