Giter VIP home page Giter VIP logo

wyriwyd's Introduction

License Build Status codecov Collaborations Workshop 2019

WYRIWYD: What You Run Is What You Doc

Generate maintainable tutorials quickly

(A hackday project from the Software Sustainability Institute Collaborations Workshop 2019.)

The wyriwyd dragon logo

Introduction

Tutorials and how-to guides are a key component of software documentation. While many tools exist for automatic generation of API reference material, tutorials can be intimidating to set up and easily fall behind software changes. WYRIWYD is intended to help novice software developers build and maintain tutorials for simple command-line programs.

Workflow

The main components of WYRIWYD are:

  • A wizard which creates a bare-bones tutorial by watching the developer use their own code in a shell.

  • A markdown file convention which allows users to comfortably insert further comments and make corrections/updates as the code changes.

  • A testing utility which verifies that the tutorial is correct for the current code version. If continuous integration (e.g. Travis CI) is used, this test can be added to the repository hooks for futher peace of mind.

Installation

pip install git+https://github.com/wyriwyd/wyriwyd.git#egg=wyriwyd

Usage

To generate markdown documentation, run the wyriwydzard command. After entering the name of the document to generate, keep entering your commands in the prompt. A bare-bones tutorial will be generated in markdown, which you can expand with explanations of the commands.

To test existing markdown documentation, just run the wyriwyd-test command over the markdown file. Note if the commands in the documentation assume you will be in a given directory, then you should cd there first.

cd examples/
wyriwyd-test sample.md

And if everything is ok, you should see:

Everything looks ok!!

For more support on the testing tool, use --help

wyriwyd-test --help
usage: wyriwyd-test [-h] [-r] [-e EMPTY] infile

positional arguments:
  infile                The path to the input markdown file

optional arguments:
  -h, --help            show this help message and exit
  -r, --raise-error     Raise an exception at the first error
  -e EMPTY, --empty EMPTY
                        If the Markdown file contains commands without a
                        following output, and the command when runs produces
                        output, treat this as an error

Incuding into continuous integration:

We even run the command itself over this README:

There's also an example project at https://github.com/wyriwyd/wyriwyd-live-demo

wyriwyd's People

Contributors

ajjackson avatar benkrikler avatar dpshelio avatar giordano avatar ilectra avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

ilectra

wyriwyd's Issues

Capture stderr

Currently, the tool doesn't deal with programs writing to stderr

wizard on osx

Not quite working yet...
Also need to deal with special characters at the end of output lines.

Tutorial dependencies to files external to repo

The tutorial material generated, should not depend on resources (mainly input files) not in the repo. This would make the tutorial useless for a user of the package, and will (correctly) fail the wyriwyd tests.
How to fix:

  • When wizard is run, should enforce the tutorial generated is self-contained.
  • Other ideas?

Accommodate user input

The command the user runs and wants to document, might request input from the user. Have to accommodate this!

Reuse testing code for the wizard ?

The executor module maintains a bash shell and sends commands in, capturing each command's output. Since it's the same shell if you change directory and modify environment variables this is all available to the next commands. Perhaps the wizard's code could make use of this, but adding a command-line reader which sends the commands it receives to the executor and prints what the executor produces back out.

Option to insert command output back into markdown

Extend the testing tool by having it run a markdown file and insert each command blocks output into an output block. If one exists, it should be replaced, if nothing exists it should be created (or perhaps optionally ommitted, if that's what the user intended originally). Makes the testing tool even more like an org-mode / notebook tool for markdown and bash, and useful as a way to update docs automatically when a command has been changed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.