Goal

Due to work, travel, and illness, I've not touched Obnam in over a month. The goal for today is to get back into it by doing some chores: making sure everything still works, update dependencies that need it, and fix some small issues.

Plan

  • Run tests, fix anything that's broken.
  • Run cargo outdated -d1 and update anything that needs to be.
  • Pick an issue to fix. Fix it. Repeat until I ran out of time for today.

Notes

Make sure build works and tests pass

  • Ran make. It succeeds. Nothing to fix.

Update dependencies

  • Ran cargo outdated -d1:
Name       Project  Compat   Latest   Kind    Platform
----       -------  ------   ------   ----    --------
clap       4.5.48   4.5.51   4.5.51   Normal  ---
clingwrap  0.4.0    ---      0.5.0    Normal  ---
flate2     1.1.2    1.1.5    1.1.5    Normal  ---
serde      1.0.226  1.0.228  1.0.228  Normal  ---
tempfile   3.22.0   3.23.0   3.23.0   Normal  ---
thiserror  2.0.16   2.0.17   2.0.17   Normal  ---
  • Of these, clingwrap is the only I need to update. The other ones will be updated in Cargo.lock with cargo update. clingwrap is my own crate, so I like to keep its dependency up to date. Otherwise, I'm not sure it's a good idea to always depend on the newest of everything. That only ends up in a lot of churn.
  • Updated clingwrap dependency to 0.5.0.
  • Pushed these changes to Radicle as a patch.

Existing patch that has been waiting

  • Oops, I have a patch 8f7d4fa from early October to add logging that I haven't merged. Except I seem to have, but Radicle hasn't noticed that. I think I've made changes to the patch locally, before merging, and then not pushed the change to Radicle, so it thinks I didn't merge. Radicle looks at commit IDs only, and in that scenario they don't match, even if the code changes are there.
  • I'll archive the patch.

Issue tidy up

  • Issue d5d2ea35862cea5b644250e409224f7f89370940 ("Lacks Debian packaging") has been fixed.

Configure SOP implementation to use

  • Issue a53a9e942f2d2e8be8e6e9ea5a70d5d39560eea9 ("Can't configure name of SOP implementation to use") seems like it'd be easy and quick.
  • I use rsop hard coded everywhere now, and rsoct for OpenPGP card use.
  • I'll add configuration file fields sop and sop-card and make them default to rsop and rsoct.
  • Added the fields, as optional PathBufs.
  • Sop wants OsStr values, which is a mismatch. I'll convert the paths to operating system strings for now.
  • For tests, I don't want to hard code rsop or rsoct but use the defaults used in the config module. To do this, I'll default Default for Sop and SopCard, for tests. Outside tests, we have to use the configuration settings.
  • Refactor my previous changes so that Sop and SopCard get the commands to run as Path, not OsStr, to resolve the previous mismatch. Either type is correct, but it's more tidy to use the same one.
  • When creating a CredentialSpec in src/config.rs, I'm currently hard coding the rsop and rsoct commands. The should not be the defaults either, via the constants I now have. They should come from the config fields.
  • I can achieve that by passing in a reference to the run time config to CredentialSpec:method. Since the method is only called from subcommand implementations, the ref is always available. So I'll do that, and refactor in the future if that becomes tricky. The alternative would be for the run time configuration to assemble CredentialSpec values when the configuration is loaded.
  • Merged.

Client name

  • Issue 6cd66212db3582b357508abe6d2b4f7b7909e901 ("Client name can only be set on the command line") is about the client name only being possible to set on the command line. Specifically in the obnam chunk {encrypt,decrypt} --client_name and the obnam client init commands.
  • I'll add a ciient_name configuration setting. It'll be optional, and defaults to the hostname. Done.
  • Ooops, the obnam store init command takes an optional client name argument that isn't actually used anywhere. Dropped that.
  • The obnam client init subcommand takes an argument for a client name. Likewise obnam client show. Making those into options.
  • Changed the subplot to use the more convienient way to specify client name.
  • Merged.

Summary

Comments?

If you have feedback on this development session, please use the following fediverse thread: https://toot.liw.fi/@liw/115558654054863720.