Courseware Manager

SYNOPSIS
courseware [-c CONFIG] [-d] <verb> [subject] [subject] ...

DESCRIPTION
Manage the development lifecycle of Puppet courseware. This tool is not
required for presenting the material or for contributing minor updates.

The following verbs are recognized:

* print
Render course material as PDF files. This verb accepts one or more of the
following arguments, where the default is all.

Arguments (optional):
handouts: Generate handout notes
exercises: Generate the lab exercise manual
solutions: Generate the solution guide
guide: Generate the instructor guide

* watermark
Render watermarked PDF files. Accepts same arguments as the `print` verb.

* generate or update
Build new or update certain kinds of configuration. By default, this will
update the stylesheet.

Arguments (optional):
skeleton <name>: Build a new course directory named <name> and generate
required metadata for a Showoff presentation.

config: Write current configuration to a `courseware.yaml` file.

styles: Generate or update the stylesheet for the current version.

links: Ensure that all required symlinks are in place.

metadata: Interactively generate or update the `showoff.json` file.

* validate [check]
Runs validation checks on the presentation. Defaults to running all the checks.

Validators:
obsolete: Lists all unreferenced images and slides. This reference checks all
slides and all CSS stylesheets. This validation is case sensitive
and should be run from the toplevel courseware root directory.

missing: Lists all slides and images that are missing. This validation is case
sensitive and should be run from within an individual course directory.

lint: Runs a markdown linter on each slide file, using our own style
definition. This should be run within a course directory.


* release [type]
Orchestrate a courseware release. Defaults to `point`.

All instructors are expected to deliver the most current point release, except
in extraordinary cases. We follow Semver, as closely as it can be adapted to
classroom usage. Instructors can trust that updates with high potential to cause
classroom disruptions will never make it into a point release.

http://semver.org

Release types:
major: This is a major release with "breaking" changes, such as a major
product update, or significant classroom workflow changes. This
is not necessarily tied to product releases. Instructors should
expect to spend significant time studying the new material thoroughly.

minor: This indicates a significant change in content. Instructors
should take extra time to review updates in minor releases.
The release cadence is roughly once a quarter, give or take.

point: Release early and release often. Changes made in the regular
maintenance cycle will typically fit into this category.

notes: Display release notes since last release and copy to clipboard.

* wordcount [type]
Display a simple wordcount of one or more content types.

Arguments (optional):
handouts: Counts words in the student handout guide
exercises: Counts words in the lab exercise manual
solutions: Counts words in the solution guide

* compose [comma,separated,list,of,tags]
Generates a variant of the complete course, using tags defined in `showoff.json`.
The practical effect of this action is to generate a new presentation `.json` file,
which can be displayed directly by passing the `-f` flag to Showoff, or by choosing
a variant in the classroom `rake present` task.

* package [variant.json]
Package up a standalone form of a given variant of the presentation. You can pass
in a `variant.json` file, or choose from a menu. Tarballs will be saved into the
`build` directory and you can optionally retain the full working directory.

* help
You're looking at it.