fix(sync): replace cryptic sigil counters with readable output

Problem: sync summaries used unexplained sigils (`+/-/~` and `!`) that
conveyed no meaning, mixed symbol and prose formats across operations,
and `gcal push` silently swallowed failures with no aggregate counter.

Solution: replace all summary `log.info` calls with a shared
`fmt_counts` helper that formats `N label` pairs separated by ` | `,
suppresses zero counts, and falls back to "nothing to do". Add a
`failed` counter to `gcal.push` to surface errors previously only
emitted as individual warnings.
This commit is contained in:
Barrett Ruth 2026-03-06 13:18:00 -05:00
parent 991ac5b467
commit b2efe168fe
2 changed files with 72 additions and 21 deletions

View file

@ -154,6 +154,21 @@ local function unlink_remote(task, extra, now_ts)
task.modified = now_ts
end
---@param parts {[1]: integer, [2]: string}[]
---@return string
local function fmt_counts(parts)
local items = {}
for _, p in ipairs(parts) do
if p[1] > 0 then
table.insert(items, p[1] .. ' ' .. p[2])
end
end
if #items == 0 then
return 'nothing to do'
end
return table.concat(items, ' | ')
end
---@param callback fun(access_token: string): nil
local function with_token(callback)
oauth.async(function()
@ -176,7 +191,7 @@ function M.push()
local s = require('pending').store()
local now_ts = os.date('!%Y-%m-%dT%H:%M:%SZ') --[[@as string]]
local created, updated, deleted = 0, 0, 0
local created, updated, deleted, failed = 0, 0, 0, 0
for _, task in ipairs(s:tasks()) do
local extra = task._extra or {}
@ -197,6 +212,7 @@ function M.push()
delete_event(access_token, cal_id --[[@as string]], event_id --[[@as string]])
if del_err then
log.warn('gcal delete failed: ' .. del_err)
failed = failed + 1
else
unlink_remote(task, extra, now_ts)
deleted = deleted + 1
@ -214,6 +230,7 @@ function M.push()
local upd_err = update_event(access_token, cal_id, event_id, task)
if upd_err then
log.warn('gcal update failed: ' .. upd_err)
failed = failed + 1
else
updated = updated + 1
end
@ -221,10 +238,12 @@ function M.push()
local lid, lid_err = find_or_create_calendar(access_token, cat, calendars)
if lid_err or not lid then
log.warn('gcal calendar failed: ' .. (lid_err or 'unknown'))
failed = failed + 1
else
local new_id, create_err = create_event(access_token, lid, task)
if create_err then
log.warn('gcal create failed: ' .. create_err)
failed = failed + 1
elseif new_id then
if not task._extra then
task._extra = {}
@ -245,7 +264,15 @@ function M.push()
if buffer.bufnr() and vim.api.nvim_buf_is_valid(buffer.bufnr()) then
buffer.render(buffer.bufnr())
end
log.info(string.format('Google Calendar pushed — +%d ~%d -%d', created, updated, deleted))
log.info(
'gcal push: '
.. fmt_counts({
{ created, 'added' },
{ updated, 'updated' },
{ deleted, 'removed' },
{ failed, 'failed' },
})
)
end)
end