@@ -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 _'
8787endfunction
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
9999endfunction
100100
101+ " Retrieves the package.json version of either rescript or bs-platform
101102function ! 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
119120endfunction
120121
121122function ! 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 ()
553554endfunction
0 commit comments