- Rust 100%
| .woodpecker | ||
| src | ||
| .editorconfig | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| basic_jdex.kdl | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CODE_OF_CONDUCT.md | ||
| LICENSE.md | ||
| mise.toml | ||
| README.md | ||
| renovate.json | ||
| tennis.kdl | ||
jd_kdl
Manage your Johnny.Decimal index with a KDL file.
A KDL index looks like this:
area 20 29 "Tennis club"
category 21 "People"
heading 21 10 "Current, past, & future members"
id 21 11 "Applications"
id 21 12 "Current members"
jd_kdl can add IDs either interactively or through arguments:
Usage
At a bare minimum, add your area, category, heading, and id entries
like in the example above.
You can do that by hand, or with jd_kdl <area|category|heading|id> add commands.
Once you've made your index, run jd_kdl tree to make sure the file parses right.
$ jd_kdl -f index.kdl tree
index.kdl
└─ 20-29 Tennis club
└─ 21 People
└─ 21.10 Current, past, & future members
├─ 21.11 Applications
└─ 21.12 Current members
You can add information to your index with description, location, and
locations entries:
area 20 29 "Tennis club"
category 21 "People"
heading 21 10 "Current, past, & future members"
id 21 11 "Applications" {
description """
Anything related to someone wanting to join the club.
"""
locations {
- "club email"
- "filing cabinet"
}
}
id 21 12 "Current members" {
location "filesystem"
}
Print a description of any entry with the show command:
$ jd_kdl -f index.kdl id show 21 11
21.11 Applications
=================
Anything related to someone wanting to join the club.
Locations
----------
- club email
- filing cabinet
You can use it to create folders on your filesystem, too:
$ jd_kdl -f index.kdl export folders -d ~/System
Creating directory ~/System/20-29 Tennis club
Creating directory ~/System/20-29 Tennis club/21 People
Creating directory ~/System/20-29 Tennis club/21 People/21.10 Members
Creating directory ~/System/20-29 Tennis club/21 People/21.11 Applications
Creating directory ~/System/20-29 Tennis club/21 People/21.12 Current members
See jd_kdl --help to see the complete list of commands.
Maintainer
This project is maintained by Rosa Richter. You can get in touch with her on Matrix.
Contributing
Questions and pull requests are more than welcome. I believe bad documentation is a bug, so if anything is unclear, please file an issue!
Note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms.
License
© 2025 Rosa Richter
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.