From 79a4d22575ad4a01ebb00a13bd03f8a8ba7ff684 Mon Sep 17 00:00:00 2001 From: Giovanni Visciano Date: Thu, 28 Sep 2023 22:48:34 +0200 Subject: [PATCH 1/3] dialyzer fixes --- config/config.exs | 1 - lib/optimus.ex | 23 ++++++++++++++++++++--- mix.exs | 8 +------- mix.lock | 10 +++++----- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/config/config.exs b/config/config.exs index d4c174a..becde76 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,2 +1 @@ import Config - diff --git a/lib/optimus.ex b/lib/optimus.ex index 6d135c8..b32780a 100644 --- a/lib/optimus.ex +++ b/lib/optimus.ex @@ -88,7 +88,21 @@ defmodule Optimus do @type spec :: [spec_item] @type error :: String.t() - @opaque t :: %Optimus{} + + @type t :: %Optimus{ + name: String.t(), + description: String.t(), + version: String.t(), + author: String.t(), + about: String.t(), + allow_unknown_args: boolean, + parse_double_dash: boolean, + args: [arg_spec_item], + flags: [flag_spec_item], + options: [option_spec_item], + subcommands: [{atom, spec}], + subcommand: {atom, spec} + } @spec new(spec) :: {:ok, t} | {:error, [error]} def new(props) do @@ -169,6 +183,7 @@ defmodule Optimus do end end + @spec help(t) :: String.t() def help(optimus) do optimus |> Optimus.Help.help([], columns()) @@ -212,12 +227,14 @@ defmodule Optimus do end end + @spec fetch_subcommand(t, subcommand_path) :: {t, subcommand_path} def fetch_subcommand(optimus, subcommand_path), do: fetch_subcommand(optimus, subcommand_path, [optimus.name]) - def fetch_subcommand(optimus, [], subcommand_name), do: {optimus, Enum.reverse(subcommand_name)} + defp fetch_subcommand(optimus, [], subcommand_name), + do: {optimus, Enum.reverse(subcommand_name)} - def fetch_subcommand(optimus, [subcommand_id | subcommand_path], subcommand_name) do + defp fetch_subcommand(optimus, [subcommand_id | subcommand_path], subcommand_name) do subcommand = Enum.find(optimus.subcommands, &(subcommand_id == &1.subcommand)) fetch_subcommand(subcommand, subcommand_path, [subcommand.name | subcommand_name]) end diff --git a/mix.exs b/mix.exs index 9e03f30..945baa1 100644 --- a/mix.exs +++ b/mix.exs @@ -9,8 +9,6 @@ defmodule Optimus.Mixfile do app: :optimus, version: @version, elixir: "~> 1.12", - build_embedded: Mix.env() == :prod, - start_permanent: Mix.env() == :prod, deps: deps(), docs: docs(), test_coverage: [tool: ExCoveralls], @@ -20,16 +18,12 @@ defmodule Optimus.Mixfile do "coveralls.post": :test, "coveralls.html": :test ], - dialyzer: [ - plt_add_deps: true, - plt_add_apps: [:ssl] - ], package: package() ] end def application do - [applications: [:logger]] + [extra_applications: [:logger]] end defp deps do diff --git a/mix.lock b/mix.lock index 9265b02..88a2b25 100644 --- a/mix.lock +++ b/mix.lock @@ -1,15 +1,15 @@ %{ "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"}, - "dialyxir": {:hex, :dialyxir, "1.3.0", "fd1672f0922b7648ff9ce7b1b26fcf0ef56dda964a459892ad15f6b4410b5284", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "00b2a4bcd6aa8db9dcb0b38c1225b7277dca9bc370b6438715667071a304696f"}, + "dialyxir": {:hex, :dialyxir, "1.4.1", "a22ed1e7bd3a3e3f197b68d806ef66acb61ee8f57b3ac85fc5d57354c5482a93", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "84b795d6d7796297cca5a3118444b80c7d94f7ce247d49886e7c291e1ae49801"}, "earmark": {:hex, :earmark, "1.4.2", "3aa0bd23bc4c61cf2f1e5d752d1bb470560a6f8539974f767a38923bb20e1d7f", [:mix], [], "hexpm", "5e8806285d8a3a8999bd38e4a73c58d28534c856bc38c44818e5ba85bbda16fb"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.36", "487ea8ef9bdc659f085e6e654f3c3feea1d36ac3943edf9d2ef6c98de9174c13", [:mix], [], "hexpm", "a524e395634bdcf60a616efe77fd79561bec2e930d8b82745df06ab4e844400a"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, - "ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"}, - "excoveralls": {:hex, :excoveralls, "0.16.1", "0bd42ed05c7d2f4d180331a20113ec537be509da31fed5c8f7047ce59ee5a7c5", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "dae763468e2008cf7075a64cb1249c97cb4bc71e236c5c2b5e5cdf1cfa2bf138"}, + "ex_doc": {:hex, :ex_doc, "0.30.6", "5f8b54854b240a2b55c9734c4b1d0dd7bdd41f71a095d42a70445c03cf05a281", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bd48f2ddacf4e482c727f9293d9498e0881597eae6ddc3d9562bd7923375109f"}, + "excoveralls": {:hex, :excoveralls, "0.17.1", "83fa7906ef23aa7fc8ad7ee469c357a63b1b3d55dd701ff5b9ce1f72442b2874", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "95bc6fda953e84c60f14da4a198880336205464e75383ec0f570180567985ae0"}, "exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm"}, "hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, - "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, + "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, "jsx": {:hex, :jsx, "2.8.2", "7acc7d785b5abe8a6e9adbde926a24e481f29956dd8b4df49e3e4e7bcc92a018", [:mix, :rebar3], [], "hexpm"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"}, From cf408e6be43af80f9b7ff4777a29fcafab63f8f1 Mon Sep 17 00:00:00 2001 From: Giovanni Visciano Date: Thu, 28 Sep 2023 22:57:43 +0200 Subject: [PATCH 2/3] elixir 1.15.6 --- .github/workflows/elixir.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 7372ba7..cdce7de 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -39,13 +39,13 @@ jobs: # Elixir 1.15 - - elixir: 1.15.2 + - elixir: 1.15.6 otp_release: 24.3 - - elixir: 1.15.2 + - elixir: 1.15.6 otp_release: 25.3 - - elixir: 1.15.2 + - elixir: 1.15.6 otp_release: 26.0 steps: @@ -76,8 +76,8 @@ jobs: - name: Set up Elixir uses: erlef/setup-beam@v1 with: - elixir-version: '1.14.3' # Define the elixir version [required] - otp-version: '25.3' # Define the OTP version [required] + elixir-version: '1.15.6' # Define the elixir version [required] + otp-version: '26.0' # Define the OTP version [required] - name: Install dependencies run: mix deps.get - name: Analyze types From 6b271bb368823c3f658b382d033b6fb446b4cd31 Mon Sep 17 00:00:00 2001 From: Giovanni Visciano Date: Sun, 25 Feb 2024 11:56:24 +0100 Subject: [PATCH 3/3] elixir 1.16 deprecation warning --- lib/optimus/option.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/optimus/option.ex b/lib/optimus/option.ex index f77ee04..00db260 100644 --- a/lib/optimus/option.ex +++ b/lib/optimus/option.ex @@ -69,7 +69,7 @@ defmodule Optimus.Option do length = String.length(option.long) + 1 if option.long <> "=" == String.slice(str, 0..(length - 1)) do - {:ok, String.slice(str, length..-1)} + {:ok, String.slice(str, length..-1//1)} else :none end