defmodule Doex.Cli.Ls do
use FnExpr
alias Doex.Cli.Parser
alias Doex.Io.{Shell, Table}
@moduledoc """
List your resources.
doex ls <--resource_type>
Currently, the only supported resource type is a `--droplets`, but more are coming.
For example
doex ls my_app --droplets
Droplets are also the default, so the `--droplets` can be omitted.
doex ls my_app
If you have a specific config file, `mix help doex.config` then add it as an environment variable
DOEX_CONFIG=/tmp/my.doex doex ls
"""
@options %{
droplets: :boolean,
droplet: :boolean
}
def run(raw_args) do
Doex.start()
raw_args
|> Parser.parse(@options)
|> invoke(fn {opts, []} -> ls(opts) end)
|> Enum.map(fn droplet -> [droplet["name"], droplet["id"], droplet["status"]] end)
|> invoke([["------", "------", "------"] | &1])
|> invoke([["name", "id", "status"] | &1])
|> Table.format(padding: 4)
|> Shell.info()
end
def ls(%{droplets: true}), do: Doex.Client.list_droplets()
def ls(%{droplet: true}), do: Doex.Client.list_droplets()
def ls(_), do: Doex.Client.list_droplets()
end