Merge branch 'develop' into feature/gen-magic
[akkoma] / mix.exs
diff --git a/mix.exs b/mix.exs
index 8fcbaa34eb3cf23f6e1e73a8cec70eb2ef10ce84..d2a40bcc8a94eff625690d7287be86be6f32c7f7 100644 (file)
--- a/mix.exs
+++ b/mix.exs
@@ -4,8 +4,8 @@ defmodule Pleroma.Mixfile do
   def project do
     [
       app: :pleroma,
-      version: version("2.0.50"),
-      elixir: "~> 1.8",
+      version: version("2.1.50"),
+      elixir: "~> 1.9",
       elixirc_paths: elixirc_paths(Mix.env()),
       compilers: [:phoenix, :gettext] ++ Mix.compilers(),
       elixirc_options: [warnings_as_errors: warnings_as_errors(Mix.env())],
@@ -90,8 +90,6 @@ defmodule Pleroma.Mixfile do
   defp elixirc_paths(_), do: ["lib"]
 
   defp warnings_as_errors(:prod), do: false
-  # Uncomment this if you need testing configurable_from_database logic
-  # defp warnings_as_errors(:dev), do: false
   defp warnings_as_errors(_), do: true
 
   # Specifies OAuth dependencies.
@@ -116,65 +114,57 @@ defmodule Pleroma.Mixfile do
   # Type `mix help deps` for examples and options.
   defp deps do
     [
-      {:phoenix, "~> 1.4.8"},
-      {:tzdata, "~> 0.5.21"},
-      {:plug_cowboy, "~> 2.0"},
+      {:phoenix, "~> 1.4.17"},
+      {:tzdata, "~> 1.0.3"},
+      {:plug_cowboy, "~> 2.3"},
       {:phoenix_pubsub, "~> 1.1"},
       {:phoenix_ecto, "~> 4.0"},
       {:ecto_enum, "~> 1.4"},
-      {:ecto_sql, "~> 3.3.2"},
-      {:postgrex, ">= 0.13.5"},
-      {:oban, "~> 1.2"},
-      {:gettext, "~> 0.15"},
-      {:pbkdf2_elixir, "~> 1.0"},
-      {:bcrypt_elixir, "~> 2.0"},
+      {:ecto_sql, "~> 3.4.4"},
+      {:postgrex, ">= 0.15.5"},
+      {:oban, "~> 2.0.0"},
+      {:gettext, "~> 0.18"},
+      {:pbkdf2_elixir, "~> 1.2"},
+      {:bcrypt_elixir, "~> 2.2"},
       {:trailing_format_plug, "~> 0.0.7"},
-      {:fast_sanitize, "~> 0.1"},
+      {:fast_sanitize, "~> 0.2.0"},
       {:html_entities, "~> 0.5", override: true},
-      {:phoenix_html, "~> 2.10"},
-      {:calendar, "~> 0.17.4"},
+      {:phoenix_html, "~> 2.14"},
+      {:calendar, "~> 1.0"},
       {:cachex, "~> 3.2"},
       {:poison, "~> 3.0", override: true},
-      # {:tesla, "~> 1.3", override: true},
       {:tesla,
-       git: "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git",
-       ref: "61b7503cef33f00834f78ddfafe0d5d9dec2270b",
+       git: "https://github.com/teamon/tesla/",
+       ref: "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30",
        override: true},
       {:castore, "~> 0.1"},
-      {:cowlib, "~> 2.8", override: true},
+      {:cowlib, "~> 2.9", override: true},
       {:gun,
-       github: "ninenines/gun", ref: "e1a69b36b180a574c0ac314ced9613fdd52312cc", override: true},
-      {:jason, "~> 1.0"},
-      {:mogrify, "~> 0.6.1"},
+       github: "ninenines/gun", ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", override: true},
+      {:jason, "~> 1.2"},
+      {:mogrify, "~> 0.7.4"},
       {:ex_aws, "~> 2.1"},
       {:ex_aws_s3, "~> 2.0"},
       {:sweet_xml, "~> 0.6.6"},
-      {:earmark, "~> 1.3"},
+      {:earmark, "1.4.3"},
       {:bbcode_pleroma, "~> 0.2.0"},
-      {:ex_machina, "~> 2.3", only: :test},
-      {:credo, "~> 1.1.0", only: [:dev, :test], runtime: false},
-      {:mock, "~> 0.3.3", only: :test},
       {:crypt,
-       git: "https://github.com/msantos/crypt", ref: "f63a705f92c26955977ee62a313012e309a4d77a"},
-      {:cors_plug, "~> 1.5"},
-      {:ex_doc, "~> 0.21", only: :dev, runtime: false},
-      {:web_push_encryption, "~> 0.2.1"},
-      {:swoosh, "~> 0.23.2"},
-      {:phoenix_swoosh, "~> 0.2"},
+       git: "https://github.com/msantos/crypt.git",
+       ref: "f63a705f92c26955977ee62a313012e309a4d77a"},
+      {:cors_plug, "~> 2.0"},
+      {:web_push_encryption, "~> 0.3"},
+      {:swoosh, "~> 1.0"},
+      {:phoenix_swoosh, "~> 0.3"},
       {:gen_smtp, "~> 0.13"},
-      {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test},
       {:ex_syslogger, "~> 1.4"},
-      {:floki, "~> 0.25"},
-      {:timex, "~> 3.5"},
+      {:floki, "~> 0.27"},
+      {:timex, "~> 3.6"},
       {:ueberauth, "~> 0.4"},
-      {:auto_linker,
-       git: "https://git.pleroma.social/pleroma/auto_linker.git",
-       ref: "95e8188490e97505c56636c1379ffdf036c1fdde"},
-      {:http_signatures,
-       git: "https://git.pleroma.social/pleroma/http_signatures.git",
-       ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"},
+      {:linkify, "~> 0.2.0"},
+      {:http_signatures, "~> 0.1.0"},
       {:telemetry, "~> 0.3"},
       {:poolboy, "~> 1.5"},
+      {:prometheus, "~> 4.6"},
       {:prometheus_ex, "~> 3.0"},
       {:prometheus_plugs, "~> 1.1"},
       {:prometheus_phoenix, "~> 1.3"},
@@ -183,24 +173,36 @@ defmodule Pleroma.Mixfile do
       {:quack, "~> 0.1.1"},
       {:joken, "~> 2.0"},
       {:benchee, "~> 1.0"},
-      {:pot, "~> 0.10.2"},
+      {:pot, "~> 0.11"},
       {:esshd, "~> 0.1.0", runtime: Application.get_env(:esshd, :enabled, false)},
       {:ex_const, "~> 0.2"},
       {:plug_static_index_html, "~> 1.0.0"},
-      {:excoveralls, "~> 0.12.1", only: :test},
       {:flake_id, "~> 0.1.0"},
+      {:concurrent_limiter,
+       git: "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git",
+       ref: "d81be41024569330f296fc472e24198d7499ba78"},
       {:remote_ip,
        git: "https://git.pleroma.social/pleroma/remote_ip.git",
        ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"},
       {:captcha,
        git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git",
        ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"},
-      {:mox, "~> 0.5", only: :test},
       {:restarter, path: "./restarter"},
       {:majic, git: "https://github.com/hrefhref/majic", branch: "develop"},
       {:open_api_spex,
        git: "https://git.pleroma.social/pleroma/elixir-libraries/open_api_spex.git",
-       ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"}
+       ref: "f296ac0924ba3cf79c7a588c4c252889df4c2edd"},
+
+      ## dev & test
+      {:ex_doc, "~> 0.22", only: :dev, runtime: false},
+      {:ex_machina, "~> 2.4", only: :test},
+      {:credo, "~> 1.4", only: [:dev, :test], runtime: false},
+      {:mock, "~> 0.3.5", only: :test},
+      # temporary downgrade for excoveralls, hackney until hackney max_connections bug will be fixed
+      {:excoveralls, "0.12.3", only: :test},
+      {:hackney, "1.15.2", override: true},
+      {:mox, "~> 0.5", only: :test},
+      {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test}
     ] ++ oauth_deps()
   end
 
@@ -217,7 +219,8 @@ defmodule Pleroma.Mixfile do
       "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
       "ecto.reset": ["ecto.drop", "ecto.setup"],
       test: ["ecto.create --quiet", "ecto.migrate", "test"],
-      docs: ["pleroma.docs", "docs"]
+      docs: ["pleroma.docs", "docs"],
+      analyze: ["credo --strict --only=warnings,todo,fixme,consistency,readability"]
     ]
   end
 
@@ -231,32 +234,37 @@ defmodule Pleroma.Mixfile do
   defp version(version) do
     identifier_filter = ~r/[^0-9a-z\-]+/i
 
-    # Pre-release version, denoted from patch version with a hyphen
-    {tag, tag_err} =
-      System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true)
-
-    {describe, describe_err} = System.cmd("git", ["describe", "--tags", "--abbrev=8"])
-    {commit_hash, commit_hash_err} = System.cmd("git", ["rev-parse", "--short", "HEAD"])
+    git_available? = match?({_output, 0}, System.cmd("sh", ["-c", "command -v git"]))
 
     git_pre_release =
-      cond do
-        tag_err == 0 and describe_err == 0 ->
-          describe
-          |> String.trim()
-          |> String.replace(String.trim(tag), "")
-          |> String.trim_leading("-")
-          |> String.trim()
+      if git_available? do
+        {tag, tag_err} =
+          System.cmd("git", ["describe", "--tags", "--abbrev=0"], stderr_to_stdout: true)
+
+        {describe, describe_err} = System.cmd("git", ["describe", "--tags", "--abbrev=8"])
+        {commit_hash, commit_hash_err} = System.cmd("git", ["rev-parse", "--short", "HEAD"])
 
-        commit_hash_err == 0 ->
-          "0-g" <> String.trim(commit_hash)
+        # Pre-release version, denoted from patch version with a hyphen
+        cond do
+          tag_err == 0 and describe_err == 0 ->
+            describe
+            |> String.trim()
+            |> String.replace(String.trim(tag), "")
+            |> String.trim_leading("-")
+            |> String.trim()
 
-        true ->
-          ""
+          commit_hash_err == 0 ->
+            "0-g" <> String.trim(commit_hash)
+
+          true ->
+            nil
+        end
       end
 
     # Branch name as pre-release version component, denoted with a dot
     branch_name =
-      with {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]),
+      with true <- git_available?,
+           {branch_name, 0} <- System.cmd("git", ["rev-parse", "--abbrev-ref", "HEAD"]),
            branch_name <- String.trim(branch_name),
            branch_name <- System.get_env("PLEROMA_BUILD_BRANCH") || branch_name,
            true <-
@@ -270,7 +278,7 @@ defmodule Pleroma.Mixfile do
 
         branch_name
       else
-        _ -> "stable"
+        _ -> ""
       end
 
     build_name =