feat(archive): duration syntax and confirmation prompt (#113)
* feat(s3): create bucket interactively during auth when unconfigured Problem: when a user runs `:Pending s3 auth` with no bucket configured, auth succeeds but offers no way to create the bucket. The user must manually run `aws s3api create-bucket` and update their config. Solution: add `util.input()` coroutine-aware prompt wrapper and a `create_bucket()` flow in `s3.lua` that prompts for bucket name and region, handles the `us-east-1` LocationConstraint quirk, and logs a config snippet on success. Called automatically from `auth()` when `sync.s3.bucket` is absent. * ci: typing * feat(parse): add `parse_duration_to_days` for duration string conversion Problem: The archive command accepted only a bare integer for days, inconsistent with the `+Nd`/`+Nw`/`+Nm` duration syntax used elsewhere. Solution: Add `parse_duration_to_days()` supporting `Nd`, `Nw`, `Nm`, and bare integers. Returns nil on invalid input for caller error handling. * feat(archive): duration syntax and confirmation prompt Problem: `:Pending archive` accepted only a bare integer for days and silently deleted tasks with no confirmation, risking accidental data loss. Solution: Accept duration strings (`7d`, `3w`, `2m`) via `parse.parse_duration_to_days()`, show a `vim.ui.input` confirmation prompt before removing tasks, and skip the prompt when zero tasks match.
This commit is contained in:
parent
7640241cf2
commit
dc365e266b
6 changed files with 287 additions and 25 deletions
|
|
@ -141,11 +141,24 @@ COMMANDS *pending-commands*
|
|||
after the add.
|
||||
|
||||
*:Pending-archive*
|
||||
:Pending archive [{days}]
|
||||
:Pending archive [{duration}]
|
||||
Permanently remove done and deleted tasks whose completion timestamp is
|
||||
older than {days} days. {days} defaults to 30 if not provided. >vim
|
||||
:Pending archive " remove tasks completed more than 30 days ago
|
||||
:Pending archive 7 " remove tasks completed more than 7 days ago
|
||||
older than {duration}. {duration} defaults to 30 days if not provided.
|
||||
|
||||
Supported duration formats:
|
||||
`Nd` N days (e.g. `7d`)
|
||||
`Nw` N weeks (e.g. `3w` → 21 days)
|
||||
`Nm` N months (e.g. `2m` → 60 days, approximated as N×30)
|
||||
`N` bare integer, treated as days (backwards-compatible)
|
||||
|
||||
A confirmation prompt is shown before any tasks are removed. If no
|
||||
tasks match the cutoff, a message is displayed and no prompt appears.
|
||||
>vim
|
||||
:Pending archive " 30-day default, with confirmation
|
||||
:Pending archive 7d " tasks completed more than 7 days ago
|
||||
:Pending archive 3w " tasks completed more than 21 days ago
|
||||
:Pending archive 2m " tasks completed more than 60 days ago
|
||||
:Pending archive 30 " bare integer, same as 30d
|
||||
<
|
||||
|
||||
*:Pending-due*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue