From b23e2fd1a528ff3add0c4aaa2c1fe985c8e5c243 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 9 Mar 2025 09:22:48 +0000 Subject: [PATCH] Extract Tailwind release helpers --- lib/mix/tasks/tailwind/check_version.ex | 15 ++++--------- lib/mix/tasks/tailwind/release.ex | 27 ++++++++++++++++++++++++ lib/mix/tasks/tailwind/update_version.ex | 26 +++++------------------ 3 files changed, 36 insertions(+), 32 deletions(-) create mode 100644 lib/mix/tasks/tailwind/release.ex diff --git a/lib/mix/tasks/tailwind/check_version.ex b/lib/mix/tasks/tailwind/check_version.ex index efeb9441..854cce20 100644 --- a/lib/mix/tasks/tailwind/check_version.ex +++ b/lib/mix/tasks/tailwind/check_version.ex @@ -8,19 +8,12 @@ defmodule Mix.Tasks.Tailwind.CheckVersion do Exits with 0 if versions match, 1 if the Tailwind needs to be updated. """ + alias Mix.Tasks.Tailwind.Release + @impl Mix.Task def run(_args) do - Application.ensure_all_started(:req) - - current_version = - Application.get_env(:tailwind, :version) - - latest_version_url = - "https://api.github.com/repos/tailwindlabs/tailwindcss/releases/latest" - - latest_version = - Req.get!(latest_version_url).body["tag_name"] - |> String.replace_prefix("v", "") + current_version = Release.fetch_current_version() + latest_version = Release.fetch_latest_version!() if current_version !== latest_version do Mix.Shell.IO.info( diff --git a/lib/mix/tasks/tailwind/release.ex b/lib/mix/tasks/tailwind/release.ex new file mode 100644 index 00000000..bc1d027a --- /dev/null +++ b/lib/mix/tasks/tailwind/release.ex @@ -0,0 +1,27 @@ +defmodule Mix.Tasks.Tailwind.Release do + @latest_version_url "https://api.github.com/repos/tailwindlabs/tailwindcss/releases/latest" + + def fetch_latest_version! do + Application.ensure_all_started(:req) + + Req.get!(@latest_version_url).body["tag_name"] + |> String.replace_prefix("v", "") + end + + def fetch_current_version do + Application.get_env(:tailwind, :version) + end + + def update_config_file!(config_file, current_version, latest_version) do + config_contents = File.read!(config_file) + + new_config_contents = + String.replace( + config_contents, + ~s(version: "#{current_version}"), + "version: \"#{latest_version}\"" + ) + + File.write!(config_file, new_config_contents) + end +end diff --git a/lib/mix/tasks/tailwind/update_version.ex b/lib/mix/tasks/tailwind/update_version.ex index 067251ba..7466d7f1 100644 --- a/lib/mix/tasks/tailwind/update_version.ex +++ b/lib/mix/tasks/tailwind/update_version.ex @@ -6,19 +6,12 @@ defmodule Mix.Tasks.Tailwind.UpdateVersion do Update the configured tailwind versino to latest. """ + alias Mix.Tasks.Tailwind.Release + @impl Mix.Task def run(_args) do - Application.ensure_all_started(:req) - - current_version = - Application.get_env(:tailwind, :version) - - latest_version_url = - "https://api.github.com/repos/tailwindlabs/tailwindcss/releases/latest" - - latest_version = - Req.get!(latest_version_url).body["tag_name"] - |> String.replace_prefix("v", "") + current_version = Release.fetch_current_version() + latest_version = Release.fetch_latest_version!() if current_version !== latest_version do Mix.Shell.IO.info( @@ -28,16 +21,7 @@ defmodule Mix.Tasks.Tailwind.UpdateVersion do config_file = Path.expand("config/config.exs", File.cwd!()) - config_contents = File.read!(config_file) - - new_config_contents = - String.replace( - config_contents, - ~s(version: "#{current_version}"), - "version: \"#{latest_version}\"" - ) - - File.write!(config_file, new_config_contents) + Release.update_config_file!(config_file, current_version, latest_version) else Mix.Shell.IO.info("tailwind configuration is up to date (#{current_version})") end