diff --git a/lib/file_system/backends/fs_mac.ex b/lib/file_system/backends/fs_mac.ex index f24ff2a807e8a8d834a141ed130e88365c1fabf1..68a8476a0edbb724f5feb20948eeb348853b6409 100644 --- a/lib/file_system/backends/fs_mac.ex +++ b/lib/file_system/backends/fs_mac.ex @@ -36,6 +36,8 @@ defmodule FileSystem.Backends.FSMac do use GenServer @behaviour FileSystem.Backend + @default_exec_file "mac_listener" + def bootstrap do exec_file = executable_path() cond do @@ -78,7 +80,7 @@ defmodule FileSystem.Backends.FSMac do end defp executable_path do - executable_path(:system_env) || executable_path(:config) || executable_path(:priv) + executable_path(:system_env) || executable_path(:config) || executable_path(:system_path) || executable_path(:priv) end defp executable_path(:config) do @@ -95,13 +97,17 @@ defmodule FileSystem.Backends.FSMac do System.get_env("FILESYSTEM_FSMAC_EXECUTABLE_FILE") end + defp executable_path(:system_path) do + System.find_executable(@default_exec_file) + end + defp executable_path(:priv) do case :code.priv_dir(:file_system) do {:error, _} -> Logger.error "`priv` dir for `:file_system` application is not avalible in current runtime, appoint executable file with `config.exs` or `FILESYSTEM_FSMAC_EXECUTABLE_FILE` env." nil dir when is_list(dir) -> - Path.join(dir, "mac_listener") + Path.join(dir, @default_exec_file) end end diff --git a/lib/file_system/backends/fs_windows.ex b/lib/file_system/backends/fs_windows.ex index 2099b035b092b22b90d651e751f2a1af53b6b074..fbfcadbd1acaa3723cc4eeff159481576827b566 100644 --- a/lib/file_system/backends/fs_windows.ex +++ b/lib/file_system/backends/fs_windows.ex @@ -26,6 +26,8 @@ defmodule FileSystem.Backends.FSWindows do @behaviour FileSystem.Backend @sep_char <<1>> + @default_exec_file "inotifywait.exe" + def bootstrap do exec_file = executable_path() if not is_nil(exec_file) and File.exists?(exec_file) do @@ -45,7 +47,7 @@ defmodule FileSystem.Backends.FSWindows do end defp executable_path do - executable_path(:system_env) || executable_path(:config) || executable_path(:priv) + executable_path(:system_env) || executable_path(:config) || executable_path(:system_path) || executable_path(:priv) end defp executable_path(:config) do @@ -62,17 +64,20 @@ defmodule FileSystem.Backends.FSWindows do System.get_env("FILESYSTEM_FSMWINDOWS_EXECUTABLE_FILE") end + defp executable_path(:system_path) do + System.find_executable(@default_exec_file) + end + defp executable_path(:priv) do case :code.priv_dir(:file_system) do {:error, _} -> Logger.error "`priv` dir for `:file_system` application is not avalible in current runtime, appoint executable file with `config.exs` or `FILESYSTEM_FSWINDOWS_EXECUTABLE_FILE` env." nil dir when is_list(dir) -> - Path.join(dir, "inotifywait.exe") + Path.join(dir, @default_exec_file) end end - def parse_options(options) do case Keyword.pop(options, :dirs) do {nil, _} ->