11local uv = vim .uv or vim .loop
22local Utils = require (" eca.utils" )
3+ local Config = require (" eca.config" )
34local Logger = require (" eca.logger" )
45
56--- @class eca.PathFinder
@@ -99,7 +100,7 @@ function M:_write_version_file(version)
99100 file :write (version )
100101 file :close ()
101102 else
102- Logger .warn (" Could not write version file: " .. self ._version_file )
103+ Logger .notify (" Could not write version file: " .. self ._version_file , vim . log . levels . WARN )
103104 end
104105end
105106
@@ -135,7 +136,7 @@ function M:_download_latest_server(server_path, version)
135136
136137 local download_path = self ._cache_dir .. " /" .. artifact_name
137138
138- Logger .debug (" Downloading latest ECA server version from: " .. download_url )
139+ Logger .notify (" Downloading latest ECA server version from: " .. download_url , vim . log . levels . INFO )
139140
140141 -- Ensure cache directory exists
141142 vim .fn .mkdir (self ._cache_dir , " p" )
@@ -149,7 +150,8 @@ function M:_download_latest_server(server_path, version)
149150
150151 local download_result = os.execute (download_cmd )
151152 if download_result ~= 0 then
152- error (" Failed to download ECA server from: " .. download_url )
153+ Logger .notify (" Failed to download ECA server from: " .. download_url , vim .log .levels .ERROR )
154+ return false
153155 end
154156
155157 -- Extract if it's a zip file
@@ -159,38 +161,42 @@ function M:_download_latest_server(server_path, version)
159161
160162 local extract_result = os.execute (extract_cmd )
161163 if extract_result ~= 0 then
162- error (" Failed to extract ECA server" )
164+ Logger .notify (" Failed to extract ECA server" , vim .log .levels .ERROR )
165+ return false
163166 end
164167
165168 -- Remove the zip file after extraction
166169 os.remove (download_path )
167170 end
168171
169172 -- Make executable (if not Windows)
170- if not uv .os_uname ().sysname :lower ():match (" windows" ) then
173+ if not vim . loop .os_uname ().sysname :lower ():match (" windows" ) then
171174 os.execute (" chmod +x " .. vim .fn .shellescape (server_path ))
172175 end
173176
174177 if not Utils .file_exists (server_path ) then
175- error (" ECA server binary not found after download and extraction" )
178+ Logger .notify (" ECA server binary not found after download and extraction" , vim .log .levels .ERROR )
179+ return false
176180 end
177181
178182 -- Write version file
179183 self :_write_version_file (version )
180184
181- Logger .debug (" ECA server downloaded successfully" )
182-
185+ Logger .notify (" ECA server downloaded successfully" , vim .log .levels .INFO )
183186 return true
184187end
185188
186189--- @return string
187- function M :find (custom_path )
190+ function M :find ()
188191 -- Check for custom server path first
192+ local custom_path = Config .server_path
189193 if custom_path and custom_path :gsub (" %s+" , " " ) ~= " " then
190- if not Utils .file_exists (custom_path ) then
191- error (" Custom server path does not exist: " .. custom_path )
194+ if Utils .file_exists (custom_path ) then
195+ Logger .debug (" Using custom server path: " .. custom_path )
196+ return custom_path
197+ else
198+ Logger .notify (" Custom server path does not exist: " .. custom_path , vim .log .levels .WARN )
192199 end
193- return custom_path
194200 end
195201
196202 local server_path = self :_get_extension_server_path ()
@@ -209,18 +215,13 @@ function M:find(custom_path)
209215 -- Download if server doesn't exist or version is outdated
210216 if not server_exists or (latest_version and current_version ~= latest_version ) then
211217 if not latest_version then
212- Logger .warn (" Could not check for latest version, using existing server" )
218+ Logger .notify (" Could not check for latest version, using existing server" , vim . log . levels . WARN )
213219 return server_path
214220 end
215221
216- local success
217-
218- local ok , err = pcall (function ()
219- success = self :_download_latest_server (server_path , latest_version )
220- end )
221-
222- if not ok or not success then
223- error ((err and tostring (err )) or " Failed to download ECA server" )
222+ local success = self :_download_latest_server (server_path , latest_version )
223+ if not success then
224+ error (" Failed to download ECA server" )
224225 end
225226 end
226227
0 commit comments