can commands¶
the can
tool is built from separate commands. The can
binary itself should be a thin wrapper which runs another binary in the form can-<command name>
. For example, if I run can new
, the can
binary should search for can-new
and run it. This is similar to how the git
command works.
This is beneficial for multiple reasons. Development on commands can stay focused and only include what is strictly necessary for that command, while vital shared libraries can still be used across multiple can still be used across multiple commands. Development is also extremely flexible. New commands can experiment and persue different tooling or even different languages without needing older commands to be changed at the same time. And, again similar to git
, third parties can supply new commands easily without needing the blessing of the original creator or needing to dive into the deep nitty gritty, even building tooling on the other commands available to end users using the 'plumbing/porcelain' model.
The commands shown here are all commands, including internal commands. Those closer to the top are more likely to be used by the end-user.
command | description |
---|---|
can-status | report the current state of the writing folder |
can-add | add notes from the writing folder into the notebook |
can-new | create a new writing-folder containing a notebook |
can-ast-at | given an address, find the AST of a note |
can-md | convert from markdown to can's internal AST format |
can-address | find the address of a particular AST |
can-note-graph | construct a list of addressed notes from the writing folder |