From 2a9be7e51a60fe92141673f891cee5f563753e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 16 Jan 2023 11:41:51 +0100 Subject: [PATCH] Reduce duplication in code and tests --- lib/mix/tasks/tailwind.install.ex | 53 +++++++++++++++---------------- lib/tailwind.ex | 11 ++++--- mix.exs | 1 - test/tailwind_test.exs | 26 +++------------ 4 files changed, 37 insertions(+), 54 deletions(-) diff --git a/lib/mix/tasks/tailwind.install.ex b/lib/mix/tasks/tailwind.install.ex index 34fdf1e..c5f98a6 100644 --- a/lib/mix/tasks/tailwind.install.ex +++ b/lib/mix/tasks/tailwind.install.ex @@ -28,34 +28,31 @@ defmodule Mix.Tasks.Tailwind.Install do def run(args) do valid_options = [runtime_config: :boolean, if_missing: :boolean] - case OptionParser.parse_head!(args, strict: valid_options) do - {opts, []} -> - if opts[:runtime_config], do: Mix.Task.run("app.config") - - if opts[:if_missing] && latest_version?() do - :ok - else - Tailwind.install() - end - - {opts, [base_url]} -> - if opts[:runtime_config], do: Mix.Task.run("app.config") - - if opts[:if_missing] && latest_version?() do - :ok - else - Tailwind.install(base_url) - end - - {_, _} -> - Mix.raise(""" - Invalid arguments to tailwind.install, expected one of: - - mix tailwind.install - mix tailwind.install 'https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target' - mix tailwind.install --runtime-config - mix tailwind.install --if-missing - """) + {opts, base_url} = + case OptionParser.parse_head!(args, strict: valid_options) do + {opts, []} -> + {opts, Tailwind.default_base_url()} + + {opts, [base_url]} -> + {opts, base_url} + + {_, _} -> + Mix.raise(""" + Invalid arguments to tailwind.install, expected one of: + + mix tailwind.install + mix tailwind.install 'https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target' + mix tailwind.install --runtime-config + mix tailwind.install --if-missing + """) + end + + if opts[:runtime_config], do: Mix.Task.run("app.config") + + if opts[:if_missing] && latest_version?() do + :ok + else + Tailwind.install(base_url) end end diff --git a/lib/tailwind.ex b/lib/tailwind.ex index 649e0a6..0055635 100644 --- a/lib/tailwind.ex +++ b/lib/tailwind.ex @@ -218,6 +218,13 @@ defmodule Tailwind do run(profile, args) end + @doc """ + The default URL to install Tailwind from. + """ + def default_base_url do + "https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target" + end + @doc """ Installs tailwind with `configured_version/0`. """ @@ -386,8 +393,4 @@ defmodule Tailwind do |> String.replace("$version", configured_version()) |> String.replace("$target", target()) end - - defp default_base_url do - "https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target" - end end diff --git a/mix.exs b/mix.exs index 1fb6f4c..b8a69d9 100644 --- a/mix.exs +++ b/mix.exs @@ -9,7 +9,6 @@ defmodule Tailwind.MixProject do app: :tailwind, version: @version, elixir: "~> 1.10", - otp: ">= 22.0", deps: deps(), description: "Mix tasks for installing and invoking tailwind", package: [ diff --git a/test/tailwind_test.exs b/test/tailwind_test.exs index ebaadce..6bf571d 100644 --- a/test/tailwind_test.exs +++ b/test/tailwind_test.exs @@ -88,26 +88,10 @@ defmodule TailwindTest do assert String.trim(File.read!("assets/js/app.js")) == expected_js end - describe "Download custom binary" do - test "Fills the URL with the configured version and computed target" do - assert :ok = - Mix.Task.rerun("tailwind.install", [ - "https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target" - ]) - end - - test "Fills the URL with the computed target" do - assert :ok = - Mix.Task.rerun("tailwind.install", [ - "https://github.com/tailwindlabs/tailwindcss/releases/download/v3.2.2/tailwindcss-$target" - ]) - end - - test "Fills the URL with the configured version" do - assert :ok = - Mix.Task.rerun("tailwind.install", [ - "https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-linux-arm64" - ]) - end + test "installs with custom URL" do + assert :ok = + Mix.Task.rerun("tailwind.install", [ + "https://github.com/tailwindlabs/tailwindcss/releases/download/v$version/tailwindcss-$target" + ]) end end