lib/doex/cli/floating_ip.reassign.ex

defmodule Doex.Cli.FloatingIp.Reassign do
  use FnExpr

  alias Doex.Cli.Parser
  alias Doex.Io.Shell
  alias Doex.Client

  @moduledoc """
  Reassign a floating IP from one droplet to another

       doex floating_ip.reassign <old_droplet_name> <new_droplet_name>

  Or, by tag

      doex floating_ip.id <old_droplet_tag> <new_droplet_tag> --tag

  If by tag, it will grab the `latest`

  For example

      doex floating_ip.reassign myapp01 myapp02

  If you have a specific config file, `mix help doex.config` then add it as an environment variable

      DOEX_CONFIG=/tmp/my.doex doex floating_ip.reassign myapp01 myapp02

  """

  @options %{
    tag: :boolean
  }

  def run(raw_args) do
    Doex.start()

    raw_args
    |> Parser.parse(@options)
    |> invoke(fn {opts, [from_name, to_name]} ->
      Client.reassign_floating_ip(from_name, to_name, opts)
    end)
    |> Shell.inspect(raw_args)
  end
end