summaryrefslogblamecommitdiff
path: root/lib/lsg_irc/script_plugin.ex
blob: 94d4edfb55095ddd4451aa7ee3226dd08895b55d (plain) (tree)
1
                                  



















                                                                                                                         
                                                          


                 
                                                                                    
                                                                                     














                                                                                                            
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