Goal
Last week I got started with a simple chunk repository implementation. It stores chunks in a directory on the local file system. I got as far as implementing a Rust type for this. Today, I will expose the chunk store at the command line.
Plan
- Implement a command
obnam store init DIRto initialize a directory as chunk storage. - Implement a command
obnam store is DIRto check if a directory is initialized as chunk storage. - Implement a command
obnam store list DIRto list IDs of all chunks in chunk storage. - Implement a command
obnam store add DIR ID LABELto add a chunk to storage. - Implement a command
obnam store find DIR LABELto find IDs of chunks with a specific label. - Implement a command
obnam store path DIR IDto show the fully qualified path name of a chunk given its ID. - Implement a command
obnam store remove DIR IDto remove a chunk. - All of this with Subplot verification scenarios.
I might not get all of this done in one sitting, but if not, I'll continue next time.
Notes
Prelude
- Verify that tests still pass. They don't. Mysterious problems, with panics on source code lines that don't do anything that would panic.
- I've seen this before. I set
CARGO_TARGET_DIRto a location shared by all my Rust projects. It seems thatcargogets somehow confused when too many projects' output goes into the same target directory. - Ran
cargo cleanand then the tests again, and they passed. - Good, I am ready to start work.
Implementation
- I'd forgotten to add a way to open an existing chunk store. Oops.
- Added a way to create an
Idfrom&str, for command line parsing. - Other than that, quite straightforward.
Rebase and marge
- Tided up the branch commit history and merged.
Summary
Finished all the commands, well ahead of time. Nice.
I could use the time I have left for today to add support for the
chunk store to the obnam chunk subcommands, so that one could,
optionally, refer to chunks in the store by ID. However, I suspect
that would run over time again, so I won't do that today. There's
always next time.
Comments?
If you have feedback on this development session, please use the following fediverse thread: https://toot.liw.fi/@liw/114567287539257837,