fix(install): simplify to the direct /releases/download/latest/ URL
CI / cargo fmt --check (push) Successful in 1m10s
CI / cargo clippy (push) Successful in 1m13s
CI / cargo test (push) Successful in 1m21s
CI / editor keymaps (push) Successful in 1m42s

Gitea serves the most recent release under the `latest` tag segment, so
`/releases/download/latest/nuwiki-ls-<target>.tar.gz` resolves directly
(HTTP 200) — no API lookup or JSON parsing needed. Drop the
latest_asset_url helpers added in the previous fix; the only real bug was
the URL shape (`/releases/latest/download/` is GitHub-only and 404s on
Gitea). Both install paths now just pick the target and build the URL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 01:46:18 +00:00
parent 3c1ed48a2f
commit c144cbbb55
2 changed files with 12 additions and 54 deletions
+5 -28
View File
@@ -48,30 +48,6 @@ function! s:build_from_source() abort
return executable(s:bin)
endfunction
" Gitea has no GitHub-style /releases/latest/download/<asset> shortcut, so
" resolve the asset's real download URL (browser_download_url) via the API.
function! s:latest_asset_url(asset) abort
let l:api = 'https://code.gfran.co/api/v1/repos/gffranco/nuwiki/releases/latest'
let l:body = system('curl -fsSL ' . shellescape(l:api))
if v:shell_error != 0
return ''
endif
try
let l:release = json_decode(l:body)
catch
return ''
endtry
if type(l:release) != type({}) || !has_key(l:release, 'assets')
return ''
endif
for l:item in l:release.assets
if get(l:item, 'name', '') ==# a:asset
return get(l:item, 'browser_download_url', '')
endif
endfor
return ''
endfunction
function! s:download_release() abort
let l:target = s:target()
if empty(l:target)
@@ -80,10 +56,11 @@ function! s:download_release() abort
if !executable('curl') || !executable('tar')
return 0
endif
let l:url = s:latest_asset_url('nuwiki-ls-' . l:target . '.tar.gz')
if empty(l:url)
return 0
endif
" Gitea serves the most recent release under the `latest` tag segment
" (/releases/download/latest/<asset>). NOT GitHub's
" /releases/latest/download/<asset> shape, which Gitea 404s.
let l:url = 'https://code.gfran.co/gffranco/nuwiki/releases/download/latest/nuwiki-ls-'
\ . l:target . '.tar.gz'
let l:archive = tempname() . '.tar.gz'
call system('curl -fsSL -o ' . shellescape(l:archive) . ' ' . shellescape(l:url))
if v:shell_error != 0