diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/toglx.ex | 50 | ||||
-rw-r--r-- | lib/toglx/escript.ex | 18 | ||||
-rw-r--r-- | lib/toglx/supervisor.ex | 15 |
3 files changed, 83 insertions, 0 deletions
diff --git a/lib/toglx.ex b/lib/toglx.ex new file mode 100644 index 0000000..454233b --- /dev/null +++ b/lib/toglx.ex @@ -0,0 +1,50 @@ +defmodule Toglx do + use Application + + @config_file Application.get_env(:toglx, :config_file) + + def start(_, _) do + Toglx.Supervisor.start_link + end + + def submit_start_event(nil), do: {:error, :badarg} + def submit_start_event(task) do + submit_stop_event + + create_togglex_client + |> Togglex.Api.TimeEntries.start(%{description: task}) + end + + def submit_stop_event do + case current do + %{data: nil} -> :ok + %{data: %{id: time_entry_id}} -> + create_togglex_client + |> Togglex.Api.TimeEntries.stop(time_entry_id) + end + end + + def current do + create_togglex_client + |> Togglex.Api.TimeEntries.current + end + + def list do + create_togglex_client + |> Togglex.Api.TimeEntries.list + end + + defp create_togglex_client do + Togglex.Client.new(%{access_token: get_auth_token!}, :api) + end + + defp get_auth_token! do + case ConfigParser.parse_file(Path.join(System.user_home!, @config_file)) do + {:ok, parse_results} -> + ConfigParser.get(parse_results, "toglx", "access_token") + {:error, _} = error -> + raise(error) + end + end + +end diff --git a/lib/toglx/escript.ex b/lib/toglx/escript.ex new file mode 100644 index 0000000..5ccc40c --- /dev/null +++ b/lib/toglx/escript.ex @@ -0,0 +1,18 @@ +defmodule Toglx.Escript do + use ArgumentParser.Builder.Escript, add_help: false + @arg [:cmd, required: true, action: :store] + @arg [:task, action: {:store, :+}] + + def run(%{cmd: "start", task: task}) do + task + |> Enum.join(" ") + |> Toglx.submit_start_event + |> IO.inspect + end + + def run(%{cmd: "stop"}) do + Toglx.submit_stop_event + |> IO.inspect + end + +end diff --git a/lib/toglx/supervisor.ex b/lib/toglx/supervisor.ex new file mode 100644 index 0000000..74091a1 --- /dev/null +++ b/lib/toglx/supervisor.ex @@ -0,0 +1,15 @@ +defmodule Toglx.Supervisor do + use Supervisor + + def start_link do + Supervisor.start_link(__MODULE__, [], name: __MODULE__) + end + + def init(_) do + children = [ + ] + + opts = [strategy: :one_for_one] + supervise(children, opts) + end +end |