Reject a duration with characters outside its parts (closes #215)
check / check (pull_request) Successful in 7m1s
check / check (pull_request) Successful in 7m1s
parseDuration fell back to an unanchored search for number-and-unit pieces when time.ParseDuration failed, and skipped everything in between. 1.0y became 0, so `snapshot create --prune --keep-newer-than 1.0y` deleted every snapshot of the backed-up names, the new one included. 2.1w became one week and 1,5y five years. The fallback now requires the whole input to be whole-number-and-unit parts with nothing between them. A bare number is rejected before time.ParseDuration sees it, since Go reads 0 and +0 as zero with no unit. Judgement call: a space between number and unit (`30 days`) was accepted and is now an error, matching Go's own units. Model: opus-5-5
This commit is contained in:
@@ -22,6 +22,15 @@ the tag exists and is exercised; what is left is merging `next` to
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-06: Made `--older-than` and `--keep-newer-than` reject a
|
||||
duration with characters outside its number-and-unit parts
|
||||
([issue #215](https://git.eeqj.de/sneak/vaultik/issues/215)). The
|
||||
parser picked out the parts it recognised and skipped the rest, so
|
||||
`1.0y` became zero and `--prune --keep-newer-than 1.0y` deleted every
|
||||
snapshot of the backed-up names, the new one included. `1.0y`,
|
||||
`1,5y`, `30 days`, `x7d` and a bare `0` are now errors; decimals still
|
||||
work in Go units such as `1.5h`.
|
||||
|
||||
- 2026-10-06: Made a backup re-chunk a known file that lists a chunk no
|
||||
uploaded blob holds
|
||||
([issue #214](https://git.eeqj.de/sneak/vaultik/issues/214)). File
|
||||
|
||||
Reference in New Issue
Block a user