Skip to content

Commit b47f5c0

Browse files
committed
Unify rescript version detection, rename legacy g: variables
1 parent de119c7 commit b47f5c0

2 files changed

Lines changed: 27 additions & 25 deletions

File tree

autoload/rescript.vim

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ function! rescript#UpdateProjectEnv()
4242
endif
4343

4444
" These variables are only used in legacy mode (bs-platform based projects)
45-
let g:rescript_compile_exe = getcwd() . "/" . l:res_bin_dir . "/bsc.exe"
46-
let g:rescript_build_exe = getcwd() . "/" . l:res_bin_dir . "/bsb.exe"
45+
let g:rescript_bsc_exe = getcwd() . "/" . l:res_bin_dir . "/bsc.exe"
46+
let g:rescript_bsb_exe = getcwd() . "/" . l:res_bin_dir . "/bsb.exe"
4747

4848
" Note that this doesn't find bsconfig when the editor was started without a
4949
" specific file within the project
@@ -86,7 +86,7 @@ function! s:DeleteLines(start, end) abort
8686
silent! execute a:start . ',' . a:end . 'delete _'
8787
endfunction
8888

89-
function! rescript#GetRescriptVscodeVersion()
89+
function! rescript#GetRescriptServerVersion()
9090
let l:out = readfile(s:rescript_plugin_dir . "/server/package.json")
9191

9292
try
@@ -98,24 +98,25 @@ function! rescript#GetRescriptVscodeVersion()
9898
endtry
9999
endfunction
100100

101+
" Retrieves the package.json version of either rescript or bs-platform
101102
function! rescript#DetectVersion()
102103
call rescript#UpdateProjectEnv()
103-
let l:command = g:rescript_compile_exe . " -version"
104104

105-
exe "lcd " . g:rescript_project_root
106-
silent let l:output = system(l:command)
107-
exe "lcd -"
108-
109-
let l:version_list = matchlist(l:output, '.* \([0-9]\+\.[0-9]\+\.[0-9]\+.*\) (.*')
110-
111-
if len(l:version_list) < 2
112-
let s:rescript_version = "0"
105+
if g:rescript_legacy_mode ==? 1
106+
let l:pkg_json = fnamemodify(g:rescript_bsc_exe, ":h") . "/../package.json"
113107
else
114-
let s:rescript_version = l:version_list[1]
108+
let l:pkg_json = fnamemodify(g:rescript_exe, ":h") . "/../package.json"
115109
endif
116110

117-
118-
return s:rescript_version
111+
let l:out = readfile(l:pkg_json)
112+
113+
try
114+
let l:json = json_decode(l:out)
115+
return l:json.version
116+
catch /.*/
117+
echo "Could not read rescript version"
118+
return "?"
119+
endtry
119120
endfunction
120121

121122
function! rescript#Format()
@@ -143,7 +144,7 @@ function! rescript#Format()
143144
call writefile(getline(1, '$'), l:tmpname)
144145

145146
" bsc -format myFile.res > tempfile
146-
let l:command = g:rescript_compile_exe . " -color never -format " . l:tmpname . " 2> " . l:stderr_tmpname
147+
let l:command = g:rescript_bsc_exe . " -color never -format " . l:tmpname . " 2> " . l:stderr_tmpname
147148

148149
exe "lcd " . g:rescript_project_root
149150
silent let l:out = systemlist(l:command)
@@ -381,10 +382,10 @@ function! rescript#Clean(...)
381382
if g:rescript_legacy_mode ==? 1
382383
if l:with_deps ==? 1
383384
" bsb -clean-world
384-
let l:cmd = g:rescript_build_exe . " -clean-world"
385+
let l:cmd = g:rescript_bsb_exe . " -clean-world"
385386
else
386387
" bsb -clean
387-
let l:cmd = g:rescript_build_exe . " -clean"
388+
let l:cmd = g:rescript_bsb_exe . " -clean"
388389
endif
389390
else
390391
if l:with_deps ==? 1
@@ -417,10 +418,10 @@ function! rescript#Build(...)
417418

418419
" If in legacy mode, run bsb
419420
if g:rescript_legacy_mode ==? 1
420-
let l:cmd = g:rescript_build_exe
421+
let l:cmd = g:rescript_bsb_exe
421422
if l:with_deps ==? 1
422423
" bsb -make-world
423-
let l:cmd = g:rescript_build_exe . " -make-world"
424+
let l:cmd = g:rescript_bsb_exe . " -make-world"
424425
endif
425426
else
426427
" Otherwise we are in modern mode and use rescript.exe
@@ -510,7 +511,7 @@ function! rescript#ReasonToRescript()
510511
echo "Current buffer is not a .re / .rei file... Do nothing."
511512
return
512513
endif
513-
let l:command = g:rescript_compile_exe . " -format " . @%
514+
let l:command = g:rescript_bsc_exe . " -format " . @%
514515

515516
silent let l:out = systemlist(l:command)
516517
if v:shell_error ==? 0
@@ -543,11 +544,11 @@ function! rescript#Info()
543544
echo "Detected rescript_analysis_exe: " . g:rescript_analysis_exe
544545

545546
if g:rescript_legacy_mode ==? 1
546-
echo "Detected rescript_compile_exe: " . g:rescript_compile_exe
547-
echo "Detected rescript_build_exe: " . g:rescript_build_exe
547+
echo "Detected rescript_bsc_exe: " . g:rescript_bsc_exe
548+
echo "Detected rescript_bsb_exe: " . g:rescript_bsb_exe
548549
else
549550
echo "Detected rescript_exe: " . g:rescript_exe
550551
endif
551552

552-
echo "Bundled rescript-vscode extension: " . rescript#GetRescriptVscodeVersion()
553+
echo "Bundled rescript server version: " . rescript#GetRescriptServerVersion()
553554
endfunction

doc/rescript.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ The plugin switches into "legacy mode" whenever it detects a project that is
4545
based on the `bs-platform` npm package. This mode ensures compatibility for
4646
older codebases that didn't migrate to our `rescript` npm package yet.
4747

48-
When in legacy mode, the plugin uses g:rescript_build_exe instead of g:rescript_exe.
48+
When in legacy mode, the plugin uses g:rescript_bsb_exe and g:rescript_bsc_exe
49+
instead of g:rescript_exe.
4950

5051
===============================================================================
5152
CONFIG *rescript-config*

0 commit comments

Comments
 (0)