Packages

A search deployment helper library. Aims to easy deployment and monitoring of distributed Manticore & Sphinx in a Linux environment

Current section

Files

Jump to
khafra_search lib khafra init tasks.ex
Raw

lib/khafra/init/tasks.ex

defmodule Khafra.Init.Tasks do
@moduledoc """
A group of tasks related to initialization, or a first time run, of Sphinx Search
"""
alias Khafra.Generate.GenerateFromConfig, as: Gen
@linux_64_version "sphinx-3.1.1-612d99f-linux-amd64"
@windows_64_version "sphinx-3.1.1-612d99f-windows-amd64.zip"
@mac_os_version "sphinx-3.1.1-612d99f-darwin-amd64"
def all(version, os \\ :linux) do
gen_all = generate_config()
dl_sphinx = download_sphinx(version)
start_searchd = start_searchd(os)
[gen_all, dl_sphinx, start_searchd]
end
def generate_config() do
Gen.gen_all()
end
def download_sphinx("linux_64"), do: download_sphinx("linux_64", @linux_64_version)
def download_sphinx("windows_64"), do: download_sphinx("windows_64", @windows_64_version)
def download_sphinx("mac"), do: download_sphinx("mac", @mac_os_version)
def download_sphinx(version_type, version) do
_ = File.mkdir("sphinx/install")
download = download(version)
unpack = unpack(version_type, version)
remove = remove()
[download, unpack, remove]
end
def start_searchd(os \\ :linux) do
searchd(["-c", "../../sphinx.conf"], os)
end
def stop_searchd(os \\ :linux) do
searchd(["-c", "../../sphinx.conf", "--stop"], os)
end
def searchd(params, os \\ :linux) do
_ = File.mkdir("sphinx/data")
_ = File.mkdir("sphinx/log")
exe_file_name = case os do
:win -> "searchd.exe"
_ -> "searchd"
end
System.cwd
|> Path.join("sphinx/install/bin/./" <> exe_file_name)
|> System.cmd(params, cd: "sphinx/install/bin")
end
defp download(version) do
_ = File.mkdir("sphinx/install")
System.cmd(
"wget",
["-q", "http://sphinxsearch.com/files/#{version}.tar.gz", "-P", "sphinx/install/"])
end
defp remove() do
System.cmd("rm", ["-rf", "sphinxdata"], cd: "sphinx/install/bin")
end
defp unpack("mac_os", version), do: unpack("linux_64", version)
defp unpack("linux_64", version) do
System.cmd(
"tar",
["zxf", "sphinx/install/#{version}.tar.gz", "-C", "sphinx/install", "--strip-components", "1"])
end
defp unpack("windows_64", version) do
System.cmd(
"unzip",
["sphinx/install/#{version}.zip"])
end
end