An open API service indexing awesome lists of open source software.

https://github.com/coderoad/coderoad-cli

CLI for CodeRoad tutorial creation
https://github.com/coderoad/coderoad-cli

Last synced: 7 months ago
JSON representation

CLI for CodeRoad tutorial creation

Awesome Lists containing this project

README

          

![Build](https://github.com/coderoad/coderoad-cli/workflows/Build/badge.svg)
![Publish](https://github.com/coderoad/coderoad-cli/workflows/Publish/badge.svg)
![NPM](https://img.shields.io/npm/v/@coderoad/cli?color=green&label=npm%3A%40coderoad%2Fcli)

# CodeRoad Buidler - CLI

Command line interface for [CodeRoad](https://marketplace.visualstudio.com/items?itemName=CodeRoad.coderoad).

## Pre-Requisites

- [NodeJS](https://nodejs.org/)
- [Git](https://git-scm.com/downloads)

## Install

Use CodeRoad CLI to set up and build a tutorial configuration file.

```shell
npm install -g @coderoad/cli
```

## Create

Create templates files for building a new tutorial.

```shell
coderoad create
```

Templates for specific coding languages to come.

## Build

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

```shell
coderoad build
```

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

Tutorial description.

## 1. This is a level with id = 1

This level has two steps...

### 1.1 First step

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

#### HINTS

- The first hint available when a user requests a hint
- The second hint that will show
- The third and final hint, as it is last in order

### 1.2 The second step

The second step...
```

**coderoad.yaml**

```yaml
---
levels:
- id: "1"
config: {}
steps:
- id: "1.1"
setup:
files:
- package.json
commands:
- npm install
solution:
files:
- package.json
commands:
- npm install
- id: "1.2"
setup:
files:
- src/server.js
commands:
- npm install
solution:
files:
- src/server.js
```

... and the commit messages

```text
commit 8e0e3a42ae565050181fdb68298114df21467a74 (HEAD -> v2, origin/v2)
Author: creator
Date: Sun May 3 16:16:01 2020 -0700

1.1 some message

commit 9499611fc9b311040dcabaf2d98439fc0c356cc9
Author: creator
Date: Sun May 3 16:13:37 2020 -0700

1.1S some message

commit c5c62041282579b495d3589b2eb1fdda2bcd7155
Author: creator
Date: Sun May 3 16:11:42 2020 -0700

1.2 some message
```

Note that the step `1.1` has two commits, one with the suffix `S`. The first commit refers to the required tests and setup, while the second optional commit contains the solution. If there are multiple commits for a level or step, they are captured in order.