From debee097559e049b03a41fb9d6baf549246acc58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Mart=C3=ADnez?= <pablo.martinez.alvarez@gmail.com> Date: Wed, 9 Aug 2017 17:18:54 +0200 Subject: [PATCH] Use mac_listener and inotifywait.exe binaries if present on System PATH (#36) --- lib/file_system/backends/fs_mac.ex | 10 ++++++++-- lib/file_system/backends/fs_windows.ex | 11 ++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/file_system/backends/fs_mac.ex b/lib/file_system/backends/fs_mac.ex index f24ff2a..68a8476 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 2099b03..fbfcadb 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, _} -> -- GitLab