https://git.schokokeks.org/derivepassphrase.git/tree/c0b2e8ab4fd0a0ff9dd1a158502d4f70c85d7721Recent commits to derivepassphrase.git (c0b2e8ab4fd0a0ff9dd1a158502d4f70c85d7721)2025-01-13T14:50:03+01:00tag:gitlist.org,2012:commit/c0b2e8ab4fd0a0ff9dd1a158502d4f70c85d7721Properly support trimmed filenames in translation strings2025-01-13T14:50:03+01:00Marco Riccisoftware@the13thletter.info
<pre>The debug translations object and the `.po` file writer now properly
support translation strings with the filename portion trimmed.
Effectively, these are separate translation strings, and as such they
need separate cache entries and separate `.po` entries.
To fully support this, the translatable string itself now knows how to
trim the filename replacement field, which the debug translations object
now honors. The `.po` writer still needs the enum name to construct the
message ID, but now it takes an optional transformed string to use
instead of the enum value, if given.
One additional minor fix to the debug translator: some of the emitted
translated messages interpolate other translated messages (such as
metavars). Thus when interpolating arguments, if the argument is
a translated string, then stringify it before interpolation. This
avoids printing the `repr` of the inner translated string, which is
otherwise very common for debug translation output.
</pre>
tag:gitlist.org,2012:commit/7986212a1f6a9ab0b4ba5d983e8a9846c90b47eaGenerate debug translations automatically, in code and on the command-line2025-01-13T14:19:27+01:00Marco Riccisoftware@the13thletter.info
<pre>Introduce a `DebugTranslations` object that returns the enum name of the
given message as its translation, including the parameters to be
interpolated.
Rename the `_format_pot_file` to `_format_po_file` and expand it to emit
either a template file or a debug translation `.po` file. This differs
slightly in the header, and in whether the translations are empty by
default or filled in with the enum name. The ad-hoc command-line
interface now accepts options to select the template or the debug
translation, and a way to explicitly override the declared version of
the `.po` template.
Because of negative experience with the `poedit` translations editor,
the message-ID (enum name) is no longer embedded as a (pseudo-)location
of the message string, but rather embedded as a translators' comment.
</pre>
tag:gitlist.org,2012:commit/7483aceb6e937bda5c0128129a4076b4df197d06Hide translation template enums behind a type alias2025-01-13T14:09:49+01:00Marco Riccisoftware@the13thletter.info
<pre>This is getting annoying to type, and error-prone to update.
</pre>
tag:gitlist.org,2012:commit/a0fe6ac8f03daa0df66dfedcf7071732f79ae45bMerge topic branch 'harmonize-exporter-interface' into master2025-01-13T12:40:34+01:00Marco Riccisoftware@the13thletter.info
<pre>* t/harmonize-exporter-interface:
Add changelog entry for export handler interface harmonization
Test the export handler dispatcher as well as the handlers directly
Harmonize the interface for both vault config export handlers
Accept all bytes-like objects as byte strings in the export subcommand
</pre>
tag:gitlist.org,2012:commit/9b9febbf4861ef7d6917367965677a58fd7ce1adAdd changelog entry for export handler interface harmonization2025-01-11T20:06:57+01:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/d25cdbdd2494feabfb29e8d8a6d8f695475bf7a2Test the export handler dispatcher as well as the handlers directly2025-01-11T19:04:57+01:00Marco Riccisoftware@the13thletter.info
<pre>For each test calling an export handler directly, also perform the test
when calling the export handler dispatcher.
</pre>
tag:gitlist.org,2012:commit/0ecb8a91d39b699816e21d6e215878ddc50252e3Harmonize the interface for both vault config export handlers2025-01-11T19:04:57+01:00Marco Riccisoftware@the13thletter.info
<pre>Harmonize the interface for the `storeroom` and the `vault_native`
config export handlers. Specifically, introduce a common interface
`exporter.ExportVaultConfigDataFunction` which all such handlers must
adhere to, as well as a registry of handlers and a decorator for
registering handlers immediately upon definition. A new top-level
function `exporter.export_vault_config_data` adhering to this interface
will dispatch to the correct implementation, based on the handler
registry; its use is recommended over calling the handlers directly.
Though it is not encoded in the programmatic interface definition, the
intent is to use common exceptions and exception messages for common
failure modes. (The intended meanings of the exceptions are listed in
the docstring of `exporter.export_vault_config_data`.) Specifically,
introduce a new error message constant for when a given handler name is
not registered in the registry, and an exception class
`exporter.NotAVaultConfigError` for when the target path cannot be
decrypted and decoded in the requested vault config encoding format with
the given or inferred storage master key. Also update some outdated or
wrong aspects of the handler docstrings.
Additionally, the registry is empty upon definition to avoild circular
imports. A separate call to the
`exporter.find_vault_config_data_handlers` function is necessary to
populate the standard set of handlers.
`exporter.export_vault_config_data` will call this automatically.
Because of this updated interface, the
`vault_native.export_vault_native_data` handler no longer supports
specifying multiple formats to try. The caller in
`derivepassphrase.cli` already handles trying multiple formats natively,
but additionally no longer dispatches to the handler functions itself,
relying on `exporter.export_vault_config_data` for this task instead.
Finally, update the tests to include the handler registry, the
decorator, the change of parameter names and the change in handling
attempting multiple formats.
</pre>
tag:gitlist.org,2012:commit/a9bd473172968db23d6b79c7a12ad7bdb9203d3cAccept all bytes-like objects as byte strings in the export subcommand2025-01-11T19:04:57+01:00Marco Riccisoftware@the13thletter.info
<pre>This is a breaking API change, because some function return types have
been widened.
</pre>
tag:gitlist.org,2012:commit/c4574c9f06dd37f8a95af0efafb068ad62a8b7d7Merge topic branch 'usage-fixes' into master2025-01-11T18:54:56+01:00Marco Riccisoftware@the13thletter.info
<pre>* t/usage-fixes:
Fix tests for rephrased "Cannot update the %s settings" message
</pre>
tag:gitlist.org,2012:commit/f2585c5ec1b1cb0f5bc7a2d924e294497696d9d6Fix tests for rephrased "Cannot update the %s settings" message2025-01-11T18:51:01+01:00Marco Riccisoftware@the13thletter.info
<pre>The rephrasing was introduced in
1b29904d789be7742119bfa06ce11aa5b7ffb6f9.
</pre>