import Config

deploy_env =
  case System.get_env("BANCHAN_DEPLOY_ENV") do
    "dev" -> :dev
    "staging" -> :staging
    "prod" -> :prod
    other -> raise "Uknown deploy environment: #{other}"
  end

config :banchan,
  deploy_env: deploy_env

# For production, don't forget to configure the url host
# to something meaningful, Phoenix uses this information
# when generating URLs.
#
# Note we also include the path to a cache manifest
# containing the digested version of static files. This
# manifest is generated by the `mix phx.digest` task,
# which you should run after static files are built and
# before starting your production server.
host =
  System.get_env("BANCHAN_HOST") ||
    raise """
    You must set the BANCHAN_HOST environment variable
    to the hostname of your production server. This must be
    available in your build environment.
    """

config :banchan, BanchanWeb.Endpoint,
  url: [scheme: "https", host: host, port: 443],
  cache_static_manifest: "priv/static/cache_manifest.json",
  force_ssl: [hsts: true, rewrite_on: [:x_forwarded_proto]],
  server: true

# https: [
#   port: 443,
#   cipher_suite: :strong,
#   keyfile: System.get_env("Banchan_SSL_KEY_PATH"),
#   certfile: System.get_env("Banchan_SSL_CERT_PATH")
# ]

# Do not print debug messages in production
config :logger,
  level: :info,
  backends: [:console, Sentry.LoggerBackend]

{hash, 0} = System.cmd("git", ["rev-parse", "HEAD"])

hash = String.trim(hash)

config :sentry,
  tags: %{
    env: deploy_env
  },
  environment_name: deploy_env,
  release: hash

config :banchan, Banchan.Repo,
  adapter: Ecto.Adapters.Postgres,
  ssl: false,
  socket_options: [:inet6],
  pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10"),
  timeout: 300_000

config :banchan, Banchan.Mailer,
  adapter: Bamboo.SendGridAdapter,
  hackney_opts: [
    recv_timeout: :timer.minutes(1)
  ]

# ## SSL Support
#
# To get SSL working, you will need to add the `https` key
# to the previous section and set your `:url` port to 443:
#
#     config :banchan, BanchanWeb.Endpoint,
#       ...
#       url: [host: "example.com", port: 443],
#       https: [
#         port: 443,
#         cipher_suite: :strong,
#         keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
#         certfile: System.get_env("SOME_APP_SSL_CERT_PATH"),
#         transport_options: [socket_opts: [:inet6]]
#       ]
#
# The `cipher_suite` is set to `:strong` to support only the
# latest and more secure SSL ciphers. This means old browsers
# and clients may not be supported. You can set it to
# `:compatible` for wider support.
#
# `:keyfile` and `:certfile` expect an absolute path to the key
# and cert in disk or a relative path inside priv, for example
# "priv/ssl/server.key". For all supported SSL configuration
# options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
#
# We also recommend setting `force_ssl` in your endpoint, ensuring
# no data is ever sent via http, always redirecting to https:
#
#     config :banchan, BanchanWeb.Endpoint,
#       force_ssl: [hsts: true]
#
# Check `Plug.SSL` for all available options in `force_ssl`.
