Current section
Files
Jump to
Current section
Files
lib/eeb.ex
defmodule Eeb do
def version, do: unquote(Mix.Project.config[:version])
def elixir_version, do: unquote(System.version)
@moduledoc """
the application module, main.
"""
use Application
def start( _type, _args ) do
import Supervisor.Spec, warn: false
children = [
worker(__MODULE__, [], function: :run),
worker(Eeb.Hit.Client, []),
worker(Eeb.Monitor, []),
worker(Eeb.GithubWebhook, []),
worker(Eeb.DuoshuoRecord, [])
]
opts = [strategy: :one_for_one, name: Eeb.Supervisor]
Supervisor.start_link(children, opts)
end
def run do
Eeb.Convert.convert_markdown_blogs_to_html()
portValue = (System.get_env("BLOG_PORT") || Eeb.ConfigUtils.read_key_value(:blog_port, "4000")) |> get_port
protocal = get_protocal()
result = case protocal do
:https ->
Plug.Adapters.Cowboy.https(Server, [], [port: portValue])
_ ->
Plug.Adapters.Cowboy.http(Server, [], [port: portValue])
end
case result do
{:ok, pid} ->
running_uri = "#{protocal}://localhost:#{portValue}/"
Hex.Shell.info("#{inspect pid} eeb running in #{running_uri}")
case :os.type() do
{:unix, :darwin} ->
:ok
# System.cmd("/usr/bin/open", ["-a", "/Applications/Google Chrome.app", "#{running_uri}"], [])
_ ->
:ok # do nothing
end
{:error, :eaddrinuse} ->
Hex.Shell.error("failed. [port #{portValue}] address already in use")
{:error, term} ->
Hex.Shell.error("failed. #{inspect term}")
end
{:ok, self()}
end
defp get_port(env_port) do
case is_binary(env_port) do
true ->
if :error == Integer.parse(env_port) do
Hex.Shell.warn("The system env EEB_PORT=#{env_port} is illegal, use default port.")
4000
else
{port, _} = Integer.parse(env_port)
port
end
false ->
4000
end
end
defp get_protocal do
:http
end
end