Canpolat.Talo
0.1.0-beta-3
See the version list below for details.
dotnet tool install --global Canpolat.Talo --version 0.1.0-beta-3
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local Canpolat.Talo --version 0.1.0-beta-3
#tool dotnet:?package=Canpolat.Talo&version=0.1.0-beta-3&prerelease
nuke :add-package Canpolat.Talo --version 0.1.0-beta-3
talo is a CLI tool to manage your ADRs, RFCs, design documents and more.
talo makes creation and management of for Architecture Decision Records, Requests for Comments and other design documents easy. You can define your own document types and use talo to manage them as well.
talo comes with features to list and export (as HTML) your documents. This is what sets talo apart from similar tools.
If you are not familiar with ADRs or RFCs, this blog post provides a brief introduction: Documenting Design Decisions using RFCs and ADRs
Features
- Supports ADRs and RFCs out of the box. Comes with built-in templates so you can start writing immediately (you can also use your own templates, if you so desire).
- Template support: You can create and use your own templates for all record types (including the built-in ones).
- Supports custom document types: You are not limited to ADR and RFC. You can create and use your own document types and talo will manage them for you too.
- Support for updating record status: You can use the
revise
command to update the status of a document. This command will keep the version table in the record tidy. You can also use thelink
command to link documents to each other. See examples below. - Listing: You can list all your records with their latest statuses.
- Exporting: You can export your records to HTML. talo will also create an
index.html
document that can be used to browse existing records. It will create links between records whenever necessary. See Export section below.
Installation
talo is released as a dotnet tool. If you already have dotnet
,
you can use the following command to install talo globally:
dotnet tool install --global Canpolat.Talo
Usage
Initialization
Initialize ADR
You can initialize your ADR workflow, by issuing the following command:
talo init adr
You can also use options to specify the directory location and the template path that will be used (if no template specified, talo will use the built-in template).
talo init adr --location docs/adr --template-path templates/adr.md
Initialize RFC
Initialization for RFC is the same as ADR. By replacing adr
with rfc
in the above section, you can initialize your RFC workflow:
talo init rfc
You can also check help:
talo init rfc --help
Bare initialization
If you don't want talo to initialize any of the built-in record types,
you can use list
without any sub-commands:
talo init
This will create a configuration file (.talo
) at the current working
directory. You can then configure your own record types and initialize
them. See below for more information.
Listing your records
Listing ADRs
talo can list all your records (including your custom record types). To list all registered record types, issue the following command:
talo list
Or, you can list all your ADRs and RFCs by:
talo list adr
and
talo list rfc
Creating new records
To add new records, you can use the add
command. For example:
talo add adr --title "Use event-based architecture" --status Accepted
If you want to apply a specific custom template to a single record, you can
use the --from-template
option.
talo add adr --title "Use GPL-3.0-or-later as license" --status Accepted --from-template templates/differentadr.md
Updating status of a record
The revise
command can be used to update record status to any text.
talo revise adr --number 2 --status Obsolete
This will add status "Obsolete" as the last status of ADR number 2.
Linking documents to each other
There are two ways to link two documents to each other.
The first is when creating a new document. talo has the --supersedes
option
to indicate that the new record is superseding an older one:
talo add adr --title "Use PostgresSQL for all database needs" --status Accepted --supersedes 3
The second method is more flexible as it allows you to specify the status text you want to use:
talo link adr --source 7 --source-status "Amends" --destination 6 --destination-status "Amended by"
After this command, record number 7 will get a new status Amends ADR0006
and
record number will have Amended by ADR0007
.
Export
You can use the export
command to export your records as HTML. This can be useful
if you want to deploy them to a web site so that a wider audience can access them.
talo export --help
By default, it will export all records. But you can specify types to limit it:
talo export --types adr
This will create HTMl files at ./export/adr
(relative to .talo
file).
Note that talo will create an index.html
file to make browsing easier. It will
also link the records together whenever necessary (for example, a record will have
a link to the record that supersedes it, and vice versa).
Configuration
The config
command provides a means to configure the existing record types as well
as create new ones.
If you want to change the directory or template location of an existing record type, you can do so by:
talo config adr --location docs/newlocation ----template-path templates/differentadr.md
This will update the configuration.
Create a custom record type
To create a new record type you need to provide a name (lowercase), a location and a template path. You can also specify a description. For example,
talo config add --name prd --location docs/prd --template-path templates/prd.md --description "Product Requirement Document"
After this, talo list
command will list prd
among the supported record types. And
you can immediately start using this new type:
talo add prd --title "Shopping cart experience" --status "Under review"
And list it too:
talo list prd
Help
clear
talo --help
Custom templates
There are a few things you needs to pay attention to when creating custom templates for your records.
Please pay attention the following points when creating a new template. Once they are satisfied, talo will be happy to help.
Title line
talo uses the title line to populate lists. For that reason, the template needs to comply with the expected format:
# {{SEQUENCE-NUMBER}}. {{TITLE}}
Make sure to use this as the first line in your template
Status table
talo uses the status section to read and write status (and link) information. Make sure to include it towards the top of your document:
## Status
| Status | Time |
|--------------------------|--------------------|
| {{STATUS}} | {{TIME}} |
Attributions
- To convert markdown files to HTML, talo uses markdig with all advanced extensions active.
- NuGet icon design by I Wayan Wika.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
This package has no dependencies.
Version | Downloads | Last updated |
---|---|---|
0.4.0 | 138 | 6/20/2024 |
0.3.0 | 97 | 6/15/2024 |
0.2.1 | 841 | 1/7/2024 |
0.2.0 | 954 | 1/7/2024 |
0.2.0-beta-01 | 839 | 1/7/2024 |
0.1.0-beta-8 | 860 | 1/6/2024 |
0.1.0-beta-7 | 812 | 1/5/2024 |
0.1.0-beta-6 | 871 | 1/5/2024 |
0.1.0-beta-5 | 891 | 1/5/2024 |
0.1.0-beta-4 | 884 | 1/3/2024 |
0.1.0-beta-3 | 895 | 12/29/2023 |
0.1.0-beta-2 | 864 | 12/29/2023 |
0.1.0-beta-10 | 850 | 1/7/2024 |