defmodule Nola.IRC.ScriptPlugin do
require Logger
@moduledoc """
Allows to run outside scripts. Scripts are expected to be long running and receive/send data as JSON over stdin/stdout.
"""
@ircdoc """
# script
Allows to run an outside script.
* **+script `<name>` `[command]`** défini/lance un script
* **-script `<name>`** arrête un script
* **-script del `<name>`** supprime un script
"""
def irc_doc, do: @ircdoc
def start_link() do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init([]) do
{:ok, _} = Registry.register(IRC.PubSub, "trigger:script", [plugin: __MODULE__])
dets_filename = (Nola.data_path() <> "/" <> "scripts.dets") |> String.to_charlist
{:ok, dets} = :dets.open_file(dets_filename, [])
{:ok, %{dets: dets}}
end
def handle_info({:irc, :trigger, "script", m = %{trigger: %{type: :plus, args: [name | args]}}}, state) do
end
def handle_info({:irc, :trigger, "script", m = %{trigger: %{type: :minus, args: args}}}, state) do
case args do
["del", name] -> :ok #prout
[name] -> :ok#stop
end
end
end