Fix language tool jar missing in dev warning message

This commit is contained in:
Simon Prévost 2023-10-24 18:17:17 -04:00
parent 2aa9b82e5a
commit 08849ae462
3 changed files with 39 additions and 28 deletions

View File

@ -19,14 +19,14 @@ defmodule LanguageTool do
end
)
else
empty_matches(lang, text)
empty_matches(lang, text, :unsupported_language)
end
catch
_ -> empty_matches(lang, text)
_ -> empty_matches(lang, text, :check_internal_error)
end
defp empty_matches(lang, text) do
%{"error" => nil, "language" => lang, "matches" => [], "text" => text, "markups" => []}
defp empty_matches(lang, text, error) do
%{"error" => error, "language" => lang, "matches" => [], "text" => text, "markups" => []}
end
def available? do

View File

@ -4,31 +4,37 @@ defmodule LanguageTool.Backend do
require Logger
def start(config) do
path = Application.app_dir(:accent, "priv/native")
if File.exists?(jar_file()) do
args = [
executable(),
"-cp",
jar_file(),
"com.mirego.accent.languagetool.AppKt",
"--languages",
Enum.join(config.languages, ",")
]
args = [
executable(),
"-cp",
Path.join(path, "language-tool.jar"),
"com.mirego.accent.languagetool.AppKt",
"--languages",
Enum.join(config.languages, ",")
]
args =
if Enum.any?(config.disabled_rule_ids) do
args ++ ["--disabledRuleIds", Enum.join(config.disabled_rule_ids, ",")]
else
args
end
args =
if Enum.any?(config.disabled_rule_ids) do
args ++ ["--disabledRuleIds", Enum.join(config.disabled_rule_ids, ",")]
else
args
end
{:ok, backend} = Exile.Process.start_link(args)
receive_ready?(backend)
backend
{:ok, backend} = Exile.Process.start_link(args)
receive_ready?(backend)
backend
else
Logger.warning("LanguageTool could not be started. Install JRE and build the jar in #{jar_file()} to enable it")
end
end
def available? do
!!executable()
!!executable() and File.exists?(jar_file())
end
defp jar_file do
Path.join(Application.app_dir(:accent, "priv/native"), "language-tool.jar")
end
defp executable do

View File

@ -46,12 +46,17 @@ defmodule LanguageTool.Server do
end
def handle_info(:init_server_process, state) do
backend = LanguageTool.Backend.start(state.config)
state = %{state | backend: backend}
case LanguageTool.Backend.start(state.config) do
nil ->
:persistent_term.put({:language_tool, :ready}, false)
{:noreply, state}
:persistent_term.put({:language_tool, :ready}, true)
backend ->
state = %{state | backend: backend}
:persistent_term.put({:language_tool, :ready}, true)
{:noreply, state}
{:noreply, state}
end
end
def handle_info(_message, state) do