Catbox is an idea I had last night while thinking about creating a better static site generator.

The idea is to create a general-purpose visual scripting tool for transforming input files into some output format.

For a static site generator application, for example, you could take in a directory of markdown files and convert them to html:

in = [ { name = "arg1", type = "text" } ]
out = [ { name = "result", from = "node2", index = "html" } ]
 
[[nodes]]
name = "node1"
type = "gfm"
in = [ { from = "in", index = "arg1" } ]
 
[[nodes]]
name = "node2"
type = "md_to_html"
in = [ { from = "node1", index = "md" } ]

The graphs defined by catbox should always be pure (no IO operations are allowed, for example).

To run the code contained within the graph, we would like to invoke it on the command line like this:

catbox graph.toml output/ --arg1=path/to/dir/