# Import all plugins from `rel/plugins`
# They can then be used by adding `plugin MyPlugin` to
# either an environment, or release definition, where
# `MyPlugin` is the name of the plugin module.
~w(rel plugins *.exs)
|> Path.join()
|> Path.wildcard()
|> Enum.map(&Code.eval_file(&1))

use Mix.Releases.Config,
  # This sets the default release built by `mix release`
  default_release: :default,
  # This sets the default environment used by `mix release`
  default_environment: Mix.env()

# For a full list of config options for both releases
# and environments, visit https://hexdocs.pm/distillery/config/distillery.html

# You may define one or more environments in this file,
# an environment's settings will override those of a release
# when building in that environment, this combination of release
# and environment configuration is called a profile

environment :dev do
  # If you are running Phoenix, you should make sure that
  # server: true is set and the code reloader is disabled,
  # even in dev mode.
  # It is recommended that you build with MIX_ENV=prod and pass
  # the --env flag to Distillery explicitly if you want to use
  # dev mode.

  set(
    commands: [
      binstall: "rel/commands/binstall.sh",
      migrate: "rel/commands/migrate.sh"
    ]
  )

  set(include_erts: true)
  set(include_src: false)
  set(cookie: :"^`~K6{^:HDz8{Cbq`.~c`l/!ROE4?0Y&N_./t$@33fo(=WcsM>5=bfN02R,K;v*b")

  set(
    config_providers: [
      {Mix.Releases.Config.Providers.Elixir, ["${RELEASE_ROOT_DIR}/etc/config.exs"]}
    ]
  )

  set(
    overlays: [
      {:mkdir, "etc"},
      {:copy, "rel/config/dev.exs", "etc/config.exs"}
    ]
  )
end

environment :prod do
  set(include_erts: true)
  set(include_src: false)
  set(cookie: :"pBpq3i>h9Eoa1(F~fw8`;IYq1G]M$Nifih<C~9(fuId_$EKRUcF=B_*ZRaZk@Rb!")

  # Custom vm.args
  set(vm_args: "rel/vm.args")

  set(
    commands: [
      binstall: "rel/commands/binstall.sh",
      migrate: "rel/commands/migrate.sh"
    ]
  )

  set(
    config_providers: [
      {Mix.Releases.Config.Providers.Elixir, ["${RELEASE_ROOT_DIR}/etc/config.exs"]}
    ]
  )

  set(
    overlays: [
      {:mkdir, "etc"},
      {:template, "rel/etc/ellie.service", "etc/ellie.service"},
      {:copy, "rel/config/prod.exs", "etc/config.exs"}
    ]
  )
end

# You may define one or more releases in this file.
# If you have not set a default release, or selected one
# when running `mix release`, the first release in the file
# will be used by default

release :ellie do
  set(version: current_version(:ellie))

  set(applications: [:runtime_tools])
end
