hexlet-codebattle/codebattle

View on GitHub
services/app/config/releases.exs

Summary

Maintainability
Test Coverage
import Config

port = System.get_env("CODEBATTLE_PORT", "4000")
host = System.get_env("CODEBATTLE_HOSTNAME", "codebattle.hexlet.io")
secret_key_base = System.get_env("CODEBATTLE_SECRET_KEY_BASE")
live_view_salt = System.get_env("CODEBATTLE_LIVE_VIEW_SALT")

config :codebattle, CodebattleWeb.Endpoint,
  http: [port: port],
  url: [host: host, scheme: "https", port: 443],
  cache_static_manifest: "priv/static/cache_manifest.json",
  secret_key_base: secret_key_base,
  live_view: [signing_salt: live_view_salt],
  server: true

config :codebattle, CodebattleWeb.BotEndpoint,
  http: [:inet6, port: "4002"],
  url: [host: host, scheme: "https", port: 443],
  secret_key_base: secret_key_base,
  server: true

config :codebattle, host: host

config :codebattle, Codebattle.Repo,
  adapter: Ecto.Adapters.Postgres,
  ssl: true,
  ssl_opts: [
    verify: :verify_none
  ],
  port: System.get_env("CODEBATTLE_DB_PORT", "5432"),
  username: System.get_env("CODEBATTLE_DB_USERNAME"),
  password: System.get_env("CODEBATTLE_DB_PASSWORD"),
  hostname: System.get_env("CODEBATTLE_DB_HOSTNAME"),
  database: System.get_env("CODEBATTLE_DB_NAME"),
  pool_size: "CODEBATTLE_POOL_SIZE" |> System.get_env("10") |> String.to_integer(),
  log_level: :error

config :codebattle, :oauth,
  github_client_id: System.get_env("GITHUB_CLIENT_ID", "ASFD"),
  github_client_secret: System.get_env("GITHUB_CLIENT_SECRET", "ASFD"),
  discord_client_id: System.get_env("DISCORD_CLIENT_ID", "ASFD"),
  discord_client_secret: System.get_env("DISCORD_CLIENT_SECRET", "ASFD")

config :phoenix_meta_tags,
  title: System.get_env("CODEBATTLE_META_TITLE", "Hexlet Codebattle • Game for programmers"),
  description:
    System.get_env(
      "CODEBATTLE_META_DESCRIPTION",
      "Free online game for programmers. No ads, registration from github. Solve Tasks with the bot, friends or random players."
    ),
  url:
    System.get_env(
      "CODEBATTLE_META_URL",
      "https://codebattle.hexlet.io"
    ),
  image:
    System.get_env(
      "CODEBATTLE_META_IMAGE",
      "https://codebattle.hexlet.io/assets/images/opengraph-main.png"
    ),
  "og:type": "website",
  fb: %{
    size: %{
      width: 100,
      height: 200,
      position: %{
        x: 10,
        y: 15
      }
    }
  },
  twitter: %{
    card: "summary_large_image"
  }

import_github_tasks = System.get_env("CODEBATTLE_IMPORT_GITHUB_TASKS") == "true"
create_bot_games = System.get_env("CODEBATTLE_CREATE_BOT_GAMES") == "true"
use_external_js = System.get_env("CODEBATTLE_USE_EXTERNAL_JS") == "true"
hide_header = System.get_env("CODEBATTLE_HIDE_HEADER") == "true"
hide_footer = System.get_env("CODEBATTLE_HIDE_FOOTER") == "true"
hide_user_dropdown = System.get_env("CODEBATTLE_HIDE_USER_DROPDOWN") == "true"
hide_invites = System.get_env("CODEBATTLE_HIDE_INVITES") == "true"
use_only_token_auth = System.get_env("CODEBATTLE_USE_ONLY_TOKEN_AUTH") == "true"
show_extension_popup = System.get_env("CODEBATTLE_SHOW_EXTENSION_POPUP") == "true"
allow_guests = System.get_env("CODEBATTLE_ALLOW_GUESTS") == "true"
use_presence = System.get_env("CODEBATTLE_USE_PRESENCE") == "true"
record_games = System.get_env("CODEBATTLE_RECORD_GAMES") == "true"
use_event_rating = System.get_env("CODEBATTLE_USE_EVENT_RATING") == "true"
use_event_rank = System.get_env("CODEBATTLE_USE_EVENT_RANK") == "true"

tournament_rematch_timeout_ms =
  "CODEBATTLE_TOURNAMENT_REMATCH_TIMEOUT_MS" |> System.get_env("5000") |> String.to_integer()

config :codebattle, import_github_tasks: import_github_tasks
config :codebattle, create_bot_games: create_bot_games
config :codebattle, use_external_js: use_external_js
config :codebattle, hide_header: hide_header
config :codebattle, hide_footer: hide_footer
config :codebattle, hide_user_dropdown: hide_user_dropdown
config :codebattle, hide_invites: hide_invites
config :codebattle, use_only_token_auth: use_only_token_auth
config :codebattle, show_extension_popup: show_extension_popup
config :codebattle, tournament_rematch_timeout_ms: tournament_rematch_timeout_ms
config :codebattle, allow_guests: allow_guests
config :codebattle, use_presence: use_presence
config :codebattle, record_games: record_games
config :codebattle, collab_logo: System.get_env("CODEBATTLE_COLLAB_LOGO")
config :codebattle, collab_logo_minor: System.get_env("CODEBATTLE_COLLAB_LOGO_MINOR")
config :codebattle, force_redirect_url: System.get_env("CODEBATTLE_FORCE_REDIRECT_URL")
config :codebattle, use_event_rating: use_event_rating
config :codebattle, use_event_rank: use_event_rank

config :codebattle,
  guest_user_force_redirect_url: System.get_env("CODEBATTLE_GUEST_USER_FORCE_REDIRECT_URL")

config :codebattle, Codebattle.Plugs, rollbar_api_key: System.get_env("ROLLBAR_API_KEY")

config :codebattle, :firebase,
  sender_id: System.get_env("FIREBASE_SENDER_ID"),
  api_key: System.get_env("FIREBASE_API_KEY"),
  firebase_autn_url: "https://identitytoolkit.googleapis.com/v1/accounts"

checker_executor =
  case System.get_env("CODEBATTLE_EXECUTOR") do
    "rust" -> Codebattle.CodeCheck.Executor.RemoteRust
    _ -> Codebattle.CodeCheck.Executor.RemoteDockerRun
  end

config :codebattle, checker_executor: checker_executor
config :codebattle, asserts_executor: Codebattle.AssertsService.Executor.Remote
config :codebattle, :api_key, System.get_env("CODEBATTLE_API_AUTH_KEY")
config :codebattle, :lobby_event_slug, System.get_env("CODEBATTLE_LOBBY_EVENT_SLUG")
config :codebattle, default_locale: System.get_env("CODEBATTLE_DEFAULT_LOCALE", "en")
config :codebattle, force_locale: System.get_env("CODEBATTLE_FORCE_LOCALE", "false") == "true"

config :sentry_fe, dsn: System.get_env("SENTRY_FE_DNS_URL") || System.get_env("SENTRY_DNS_URL")

config :sentry,
  dsn: System.get_env("SENTRY_DNS_URL"),
  environment_name: :prod,
  enable_source_code_context: true,
  root_source_code_paths: [File.cwd!()]

port = System.get_env("CODEBATTLE_RUNNER_PORT", "4001")
host = System.get_env("CODEBATTLE_RUNNER_HOSTNAME", "codebattle.hexlet.io")
secret_key_base = System.get_env("CODEBATTLE_SECRET_KEY_BASE")

config :codebattle,
  deployed_at: System.get_env("DEPLOYED_AT") || Calendar.strftime(DateTime.utc_now(), "%c")

config :runner, RunnerWeb.Endpoint,
  http: [:inet6, port: port],
  url: [host: host, port: 81],
  secret_key_base: secret_key_base,
  server: true

config :runner,
  max_parallel_containers_run:
    System.get_env("CODEBATTLE_MAX_PARALLEL_CONTAINERS_RUN", "16") |> String.to_integer()

config :runner, :runner_url, "http://runner.default.svc"
config :runner, pull_docker_images: System.get_env("RUNNER_PULL_DOCKER_IMAGES", "") == "true"
config :runner, cpu_logger: System.get_env("RUNNER_CPU_LOGGER", "") == "true"
config :runner, container_killer: System.get_env("RUNNER_CONTAINER_KILLER", "") == "true"