Remove Rust code, delegate server to nuwiki-rs repo
Delete all Rust crates (crates/) and Cargo files. The nuwiki-ls binary is now built in the separate nuwiki-rs repository and downloaded at install time from the Gitea release assets, with a cargo build fallback that clones nuwiki-rs. Update all documentation to reflect the split repo layout.
This commit is contained in:
+14
-12
@@ -1,5 +1,5 @@
|
||||
" scripts/download_bin.vim — install `nuwiki-ls` from a release tarball,
|
||||
" falling back to `cargo build --release` on failure.
|
||||
" falling back to `cargo build --release` from the nuwiki-rs repo.
|
||||
"
|
||||
" Invoked by Dein / vim-plug build hooks:
|
||||
" vim -e -s -c "source scripts/download_bin.vim" -c "q"
|
||||
@@ -16,6 +16,7 @@ let s:plugin_dir = fnamemodify(resolve(expand('<sfile>:p')), ':h:h')
|
||||
let s:bin_dir = s:plugin_dir . '/bin'
|
||||
let s:suffix = has('win32') ? '.exe' : ''
|
||||
let s:bin = s:bin_dir . '/nuwiki-ls' . s:suffix
|
||||
let s:rs_repo = fnamemodify(s:plugin_dir, ':h:h') . '/nuwiki-rs'
|
||||
|
||||
call mkdir(s:bin_dir, 'p')
|
||||
|
||||
@@ -44,13 +45,21 @@ function! s:build_from_source() abort
|
||||
echohl ErrorMsg | echom 'nuwiki: cargo not found, cannot build from source' | echohl None
|
||||
return 0
|
||||
endif
|
||||
echom 'nuwiki: cloning nuwiki-rs …'
|
||||
if !filereadable(s:rs_repo . '/Cargo.toml')
|
||||
call system('git clone --depth 1 https://code.gfran.co/gffranco/nuwiki-rs.git ' . shellescape(s:rs_repo))
|
||||
if v:shell_error != 0
|
||||
echohl ErrorMsg | echom 'nuwiki: failed to clone nuwiki-rs' | echohl None
|
||||
return 0
|
||||
endif
|
||||
endif
|
||||
echom 'nuwiki: cargo build --release …'
|
||||
call system('cargo build --release -p nuwiki-ls --manifest-path ' . shellescape(s:plugin_dir . '/Cargo.toml'))
|
||||
call system('cargo build --release -p nuwiki-ls --manifest-path ' . shellescape(s:rs_repo . '/Cargo.toml'))
|
||||
if v:shell_error != 0
|
||||
echohl ErrorMsg | echom 'nuwiki: cargo build failed' | echohl None
|
||||
return 0
|
||||
endif
|
||||
let l:built = s:plugin_dir . '/target/release/nuwiki-ls' . s:suffix
|
||||
let l:built = s:rs_repo . '/target/release/nuwiki-ls' . s:suffix
|
||||
call system('cp ' . shellescape(l:built) . ' ' . shellescape(s:bin))
|
||||
call system('chmod +x ' . shellescape(s:bin))
|
||||
return executable(s:bin)
|
||||
@@ -64,10 +73,7 @@ function! s:download_release() abort
|
||||
if !executable('curl') || !executable('tar')
|
||||
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-'
|
||||
let l:url = 'https://code.gfran.co/gffranco/nuwiki-rs/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))
|
||||
@@ -85,11 +91,7 @@ function! s:download_release() abort
|
||||
return executable(s:bin)
|
||||
endfunction
|
||||
|
||||
if get(g:, 'nuwiki_build_from_source', 0)
|
||||
if !s:build_from_source()
|
||||
echohl ErrorMsg | echom 'nuwiki: source build failed' | echohl None
|
||||
endif
|
||||
elseif s:download_release()
|
||||
if s:download_release()
|
||||
echom 'nuwiki: installed ' . s:bin
|
||||
else
|
||||
echohl WarningMsg | echom 'nuwiki: download failed, falling back to source build' | echohl None
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# scripts/set-version.sh — stamp a release version into every hardcoded spot.
|
||||
#
|
||||
# This is the single source of truth for *where* the version lives. The
|
||||
# release pipeline (.gitea/workflows/release.yaml) calls it with the
|
||||
# workflow-dispatch input; run it the same way to prepare a release by hand:
|
||||
#
|
||||
# scripts/set-version.sh 0.4.0
|
||||
#
|
||||
# It rewrites:
|
||||
# 1. Cargo.toml — [workspace.package] version
|
||||
# 2. crates/nuwiki-lsp/Cargo.toml — nuwiki-core path-dep version pin
|
||||
# 3. crates/nuwiki-ls/Cargo.toml — nuwiki-lsp path-dep version pin
|
||||
# 4. plugin/nuwiki.vim — g:nuwiki_version (the Lua client reads it too)
|
||||
# 5. Cargo.lock — the version of our three own crates
|
||||
#
|
||||
# Cargo.lock is patched directly (awk) so this needs no cargo/toolchain —
|
||||
# the only thing that changes for our crates is their version string.
|
||||
set -euo pipefail
|
||||
|
||||
ver="${1:-}"
|
||||
ver="${ver#v}" # tolerate a leading "v"
|
||||
if ! printf '%s' "$ver" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$'; then
|
||||
echo "usage: $0 <semver> e.g. $0 0.4.0" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
root="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
cd "$root"
|
||||
|
||||
# 1. Workspace package version (root Cargo.toml, [workspace.package]).
|
||||
sed -i -E "s/^version = \"[0-9][^\"]*\"/version = \"$ver\"/" Cargo.toml
|
||||
|
||||
# 2-3. Internal path-dep pins must track the workspace version.
|
||||
sed -i -E "s|(nuwiki-core = \{ path = \"\.\./nuwiki-core\", version = )\"[^\"]*\"|\1\"$ver\"|" \
|
||||
crates/nuwiki-lsp/Cargo.toml
|
||||
sed -i -E "s|(nuwiki-lsp = \{ path = \"\.\./nuwiki-lsp\", version = )\"[^\"]*\"|\1\"$ver\"|" \
|
||||
crates/nuwiki-ls/Cargo.toml
|
||||
|
||||
# 4. VimL client version global (the Lua client reads this same g: var).
|
||||
sed -i -E "s/(let g:nuwiki_version = ')[^']*(')/\1$ver\2/" plugin/nuwiki.vim
|
||||
|
||||
# 5. Cargo.lock entries for our own crates. Each [[package]] block lists the
|
||||
# name line immediately followed by the version line; rewrite only those.
|
||||
for crate in nuwiki-core nuwiki-lsp nuwiki-ls; do
|
||||
awk -v c="$crate" -v v="$ver" '
|
||||
$0 == "name = \"" c "\"" {
|
||||
print
|
||||
if (getline > 0) { sub(/version = "[^"]*"/, "version = \"" v "\"") }
|
||||
print
|
||||
next
|
||||
}
|
||||
{ print }
|
||||
' Cargo.lock > Cargo.lock.tmp && mv Cargo.lock.tmp Cargo.lock
|
||||
done
|
||||
|
||||
echo "Set version to $ver"
|
||||
Reference in New Issue
Block a user