1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

tools: use v ls --install -p D:\path\vls.exe to install a local vls executable (#18510)

This commit is contained in:
Felix F Xu 2023-06-23 03:41:47 +08:00 committed by GitHub
parent 68ba39084d
commit 8d48b89e8e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,6 +21,7 @@ import json
enum UpdateSource {
github_releases
git_repo
local_file
}
enum SetupKind {
@ -136,6 +137,17 @@ fn (upd VlsUpdater) get_last_updated_at() !time.Time {
return error('none')
}
fn (upd VlsUpdater) copy_local_file(exec_asset_file_path string, timestamp time.Time) ! {
exp_asset_name := upd.exec_asset_file_name()
new_exec_path := os.join_path(vls_bin_folder, exp_asset_name)
os.cp(exec_asset_file_path, new_exec_path)!
upd.update_manifest(new_exec_path, false, timestamp) or {
upd.log('Unable to update config but the executable was updated successfully.')
}
upd.print_new_vls_version(new_exec_path)
}
fn (upd VlsUpdater) download_prebuilt() ! {
mut has_last_updated_at := true
last_updated_at := upd.get_last_updated_at() or {
@ -217,12 +229,7 @@ fn (upd VlsUpdater) download_prebuilt() ! {
}
}
new_exec_path := os.join_path(vls_bin_folder, exp_asset_name)
os.cp(exec_asset_file_path, new_exec_path)!
upd.update_manifest(new_exec_path, false, asset_last_updated_at) or {
upd.log('Unable to update config but the executable was updated successfully.')
}
upd.print_new_vls_version(new_exec_path)
upd.copy_local_file(exec_asset_file_path, asset_last_updated_at)!
}
fn (upd VlsUpdater) print_new_vls_version(new_vls_exec_path string) {
@ -329,13 +336,15 @@ fn (mut upd VlsUpdater) parse(mut fp flag.FlagParser) ! {
upd.pass_to_ls = fp.bool('ls', ` `, false, 'Pass the arguments to the language server.')
if ls_path := fp.string_opt('path', `p`, 'Path to the language server executable.') {
if upd.setup_kind != .none_ {
return error('Cannot use --install or --update when --path is supplied.')
} else if !os.is_executable(ls_path) {
if !os.is_executable(ls_path) {
return server_not_found_err
}
upd.ls_path = ls_path
if upd.setup_kind != .none_ {
upd.update_source = .local_file // use local path if both -p and --source are used
}
}
upd.is_help = fp.bool('help', `h`, false, "Show this updater's help text. To show the help text for the language server, pass the `--ls` flag before it.")
@ -455,6 +464,10 @@ fn (upd VlsUpdater) run(fp flag.FlagParser) ! {
.git_repo {
upd.compile_from_source()!
}
.local_file {
upd.log('Using local vls file to install or update..')
upd.copy_local_file(upd.ls_path, time.now())!
}
}
} else if upd.pass_to_ls {
exit(os.system('${upd.ls_path} ${upd.args.join(' ')}'))