Add tasks to update esbuild version
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
defmodule Mix.Tasks.Esbuild.CheckVersion do
|
||||||
|
use Mix.Task
|
||||||
|
|
||||||
|
@shortdoc "Checks the the current Esbuild version is the latest"
|
||||||
|
@moduledoc """
|
||||||
|
Checks the the current esbuild version is the latest.
|
||||||
|
|
||||||
|
Exits with 0 if versions match, 1 if the esbuild needs to be updated.
|
||||||
|
"""
|
||||||
|
|
||||||
|
alias Mix.Tasks.Esbuild.Release
|
||||||
|
|
||||||
|
@impl Mix.Task
|
||||||
|
def run(_args) do
|
||||||
|
current_version = Release.fetch_current_version()
|
||||||
|
latest_version = Release.fetch_latest_version!()
|
||||||
|
|
||||||
|
if current_version !== latest_version do
|
||||||
|
Mix.Shell.IO.info(
|
||||||
|
"A new esbuild version is available: #{current_version} ==> #{latest_version}"
|
||||||
|
)
|
||||||
|
|
||||||
|
System.halt(1)
|
||||||
|
else
|
||||||
|
Mix.Shell.IO.info("The esbuild version is up to date (#{current_version})")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
defmodule Mix.Tasks.Esbuild.Release do
|
||||||
|
@latest_version_url "https://api.github.com/repos/evanw/esbuild/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(:esbuild, :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
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
defmodule Mix.Tasks.Esbuild.UpdateVersion do
|
||||||
|
use Mix.Task
|
||||||
|
|
||||||
|
@shortdoc "Update the configured esbuild versino to latest."
|
||||||
|
@moduledoc """
|
||||||
|
Update the configured esbuild versino to latest.
|
||||||
|
"""
|
||||||
|
|
||||||
|
alias Mix.Tasks.Esbuild.Release
|
||||||
|
|
||||||
|
@impl Mix.Task
|
||||||
|
def run(_args) do
|
||||||
|
current_version = Release.fetch_current_version()
|
||||||
|
latest_version = Release.fetch_latest_version!()
|
||||||
|
|
||||||
|
if current_version !== latest_version do
|
||||||
|
Mix.Shell.IO.info(
|
||||||
|
"Updating esbuild configuration from #{current_version} to #{latest_version}"
|
||||||
|
)
|
||||||
|
|
||||||
|
config_file =
|
||||||
|
Path.expand("config/config.exs", File.cwd!())
|
||||||
|
|
||||||
|
Release.update_config_file!(config_file, current_version, latest_version)
|
||||||
|
else
|
||||||
|
Mix.Shell.IO.info("esbuild configuration is up to date (#{current_version})")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -42,6 +42,18 @@ description = 'Checks that the Tailwind version is up to date'
|
|||||||
run = 'mix tailwind.check_version'
|
run = 'mix tailwind.check_version'
|
||||||
hide = true
|
hide = true
|
||||||
|
|
||||||
|
# ESBUILD DEP
|
||||||
|
|
||||||
|
[tasks.esbuild-update]
|
||||||
|
description = 'Update the esbuild version configured in the project'
|
||||||
|
run = 'mix esbuild.update_version'
|
||||||
|
hide = true
|
||||||
|
|
||||||
|
[tasks.esbuild-outdated]
|
||||||
|
description = 'Checks that the esbuild version is up to date'
|
||||||
|
run = 'mix esbuild.check_version'
|
||||||
|
hide = true
|
||||||
|
|
||||||
# MIX DEPS
|
# MIX DEPS
|
||||||
|
|
||||||
[tasks.mix-update]
|
[tasks.mix-update]
|
||||||
@@ -71,13 +83,19 @@ hide = true
|
|||||||
# DEPENDENCIES
|
# DEPENDENCIES
|
||||||
|
|
||||||
[tasks."deps:outdated"]
|
[tasks."deps:outdated"]
|
||||||
depends = ['npm-outdated', 'tailwind-outdated', 'mix-outdated']
|
depends = [
|
||||||
|
'npm-outdated',
|
||||||
|
'tailwind-outdated',
|
||||||
|
'esbuild-outdated',
|
||||||
|
'mix-outdated',
|
||||||
|
]
|
||||||
description = 'Show outdated dependencies'
|
description = 'Show outdated dependencies'
|
||||||
|
|
||||||
[tasks."deps:update"]
|
[tasks."deps:update"]
|
||||||
depends = [
|
depends = [
|
||||||
'npm-update',
|
'npm-update',
|
||||||
'tailwind-update',
|
'tailwind-update',
|
||||||
|
'esbuild-update',
|
||||||
'mix-update',
|
'mix-update',
|
||||||
'gh-markdown-preview-extension-update',
|
'gh-markdown-preview-extension-update',
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user