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

Merged
merged 27 commits into from
Feb 5, 2021
Merged

[v3] Prepare for v3 #283

merged 27 commits into from
Feb 5, 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

ErikSchierboom and others added 27 commits January 29, 2021 14:35
* [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 concept introductions

* [CI] Format code

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Copy link
Member Author

@ErikSchierboom ErikSchierboom left a comment

Choose a reason for hiding this comment

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

We are now merging these PRs automatically so that we can continue to script further bulk-PRs to help you. For many tracks this will break CI, but we consider this a reasonable tradeoff as all Exercism tracks are in a transitionary period between now and the launch of v3.

@iHiD iHiD merged commit efb1f94 into exercism:main Feb 5, 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.

3 participants