Skip to content

update docs #12

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

Merged
merged 1 commit into from
May 31, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
update docs
Signed-off-by: shmck <[email protected]>
  • Loading branch information
ShMcK committed May 31, 2020
commit dbe16530bdda88b6641d415e336a9b29192d8656
62 changes: 29 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,44 +17,46 @@ npm install -g @coderoad/cli

## Create

Create templates files for building a new tutorial.

```shell
coderoad create
```

Create templates files in the current folder for the content and setup files.
Templates for specific coding languages to come.

## Build

```text
$ coderoad build [options]

options:
Build the configuration file to be used by the extension to run the tutorial.

-g, --git Tutorial's remote git address. Either --git or --dir should be provided.
-d, --dir Tutorial's local directory. Either --git or --dir should be provided.
-c, --code Branch that contains the code.
-s, --setup Branch that contains the TUTORIAL.md and coderoad.yaml files.
-o, --output (Optional) Save the configuration in the output file.
Log into the console if not set
-h, --help (Optional) Show the help message
```shell
coderoad build
```

Build the configuration file to be used by the extension to run the tutorial. The configuration file is created by matching the `level` and `step` ids between the `TUTORIAL.md` and `coderoad.yaml` files against git commit messages with the same ids. For example:
Defaults assume:

- a `TUTORIAL.md` markdown file (change with `--markdown OTHER.md`)
- a `coderoad.yaml` file (change with `--yaml other.yaml`)
- an output file of `tutorial.json` (change with `--output other.json`)

The configuration file is created by matching the `level` and `step` ids between the `TUTORIAL.md` and `coderoad.yaml` files against git commit messages with the same ids. For example:

**TUTORIAL.md**

```markdown
...
# Tutorial Title

## L10 This is a level with id = 10
Tutorial description.

## L1 This is a level with id = 1

This level has two steps...

### L10S1 First step
### L1S1 First step

The first step with id L10S1. The Step id should start with the level id.
The first step with id L1S1. The Step id should start with the level id.

### L10S2 The second step
### L1S2 The second step

The second step...
```
Expand All @@ -64,14 +66,13 @@ The second step...
```yaml
---
levels:
- id: L10
- id: L1
config: {}
steps:
- id: L10S1
- id: L1S1
setup:
files:
- package.json
commits: []
watchers:
- package.json
- node_modules/express
Expand All @@ -80,20 +81,17 @@ levels:
solution:
files:
- package.json
commits: []
commands:
- npm install
- id: L10S2
- id: L1S2
setup:
files:
- src/server.js
commits: []
commands:
- npm install
solution:
files:
- src/server.js
commits: []
```

... and the commit messages
Expand All @@ -103,25 +101,23 @@ commit 8e0e3a42ae565050181fdb68298114df21467a74 (HEAD -> v2, origin/v2)
Author: creator <[email protected]>
Date: Sun May 3 16:16:01 2020 -0700

L10S1Q setup step 1 for level 2
L1S1Q setup step 1 for level 1

commit 9499611fc9b311040dcabaf2d98439fc0c356cc9
Author: creator <[email protected]>
Date: Sun May 3 16:13:37 2020 -0700

L10S2A checkout solution for Level 1, step 2
L1S2A checkout solution for level 1, step 2

commit c5c62041282579b495d3589b2eb1fdda2bcd7155
Author: creator <[email protected]>
Date: Sun May 3 16:11:42 2020 -0700

L10S2Q setup level 1, step 2
L1S2Q setup level 1, step 2
```

Note that the step `L10S2` has two commits, one with the suffix `Q` and another one with `A`. The suffixes mean `Question` and `Answer`, respectively.

Steps defined as questions are **required** as they are meant to set the task to be executed by the student. The answer is optional and should be used when a commit must be loaded to verify the student's solution. If there is no need to load commits for `A` steps, the `commits` key should be removed from the `coderoad.yaml` file for that step.
Note that the step `L1S2` has two commits, one with the suffix `Q` and another one with `A`. The suffixes mean `Question` and `Answer`, respectively, and refer to the unit tests and the commit that makes them pass.

**IMPORTANT**
Steps defined as questions are **required** as they are meant to set the task to be executed by the student. The answer is optional and should be used when a commit must be loaded to verify the student's solution.

Only the most recent commit is evaluated for each level/step id.
If there are multiple commits for a level or step, they are captured in order.
11 changes: 5 additions & 6 deletions src/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,15 @@ type BuildArgs = {
const parseArgs = (args: string[]): BuildArgs => {
// default .
const dir = args[0] || ".";
// -o --output - default coderoad.json
const output =
getArg(args, { name: "output", alias: "o" }) || "coderoad.json";

// -m --markdown - default TUTORIAL.md
const markdown =
getArg(args, { name: "markdown", alias: "m" }) || "TUTORIAL.md";
// -y --yaml - default coderoad-config.yml
const yaml =
getArg(args, { name: "coderoad-config.yml", alias: "y" }) ||
"coderoad-config.yml";
const yaml = getArg(args, { name: "yaml", alias: "y" }) || "coderoad.yaml";
// -o --output - default coderoad.json
const output =
getArg(args, { name: "output", alias: "o" }) || "tutorial.json";

return {
dir,
Expand Down