Almost all repositories at Github have a file called README.md, in Markdown format, which describes what the program is, how to install it, and so on.

Inweb provides a convenient way to keep such files up to date. Suppose we take our example web smorgasbord, and create a script smorgasbord.rmscript inside it, reading:

# Sorting Smorgasbord

This is version {metadata: Semantic Version Number}, dated {metadata: Build Date}.

As part of the build process for the program, we can include this command:

$ inweb make-readme smorgasbord
smorgasbord/smorgasbord.rmscript -> smorgasbord/README.md

And this will create the README.md with contents such as:

# Sorting Smorgasbord

This is version 1-early-beta+1A02, dated 21 December 2025.

Optional switches allow both the script and destination file to be changed: inweb make-readme WEB -script S -to RM creates a file RM from the script S in the context of the web WEB, and similarly for a colony instead of a web.

If -script is not specified, Inweb first tries smorgasbord.rmscript and then scripts/smorgasbord.rmscript in the web (or colony) directory, which for this example is smorgasbord: if neither file exists, Inweb throws an error. If -to is not specified, Inweb assumes README.md in the web (or colony) directory. If -to is set to -, Inweb writes to standard output instead of to a file:

$ inweb make-readme smorgasbord -to -
# Sorting Smorgasbord

This is version 1-early-beta+1A02, dated 21 December 2025.

Mostly, whatever is in the script copies directly through into the output, but three characters have special rules:

A usage of braces is called an expansion, and:

So for example, this produces a table of all the webs in the current colony:

Title | Current version | Build date
----- | --------------- | ----------
{repeat with: W in: {list-of-webs}}
{metadata: Title of: {W}} | {metadata: Semantic Version Number of: {W}} | {metadata: Build Date of: {W}}
{end-repeat}

And this would be a script for a generic read-me file which could be used to make individual README.md files for multiple colony members:

# {metadata: Title} version {metadata: Semantic Version Number}

This is version {metadata: Semantic Version Number}, dated {metadata: Build Date}.
It can be tangled with `inweb tangle ::{web}`.

Conveniences for Inform

Two other expansions are available which are almost certainly useful only for the Inform project. {version ...} and {date ...} produce a version number and date for a piece of software in a repository which is not necessarily a colony member, because it is not necessarily a web. Specifically:

And {date ...} is similar, but less likely to find anything, because these do not all record dates as well as version numbers.