This module defines an application and a macro to generate alerts about new
versions of applications in Hex. The messages are shown using Logger
as a
warning.
When starting an app using the function or the VersionCheck
application you
should see something like:
% iex -S mix
Erlang/OTP 19 [erts-8.1] [source-4cc2ce3] [64-bit] [smp:8:8] [async-threads:10]
[hipe] [kernel-poll:false]
Interactive Elixir (1.3.2) - press Ctrl+C to exit (type h() ENTER for help)
17:30:42.454 [warn] A new yggdrasil version is available (2.0.8 > 2.0.7)
17:30:42.454 [debug] Using the latest version of :version_check (0.1.0)
iex(1)>
When adding use VersionCheck
to a module, the module adds the public
function check_version/0
. If it is called from inside the start/2
function of the Application
behaviour it'll check the current application
version against hex.pm
before it starts i.e:
defmodule MyApp do
use Application
use VersionCheck, application: :my_app
def start(_type, _args) do
import Supervisor.Spec, warn: false
check_version()
children = [
(...)
]
opts = (...)
Supervisor.start_link(children, opts)
end
end
It is also possible to add VersionCheck
to your required applications in
your mix.exs
file i.e:
def application do
[applications: [:version_check]]
end
This app will check the version of every application started. That's why it should be the last application in the list.
Just add it to your deps:
def deps do
[{:version_check, "~> 0.1"}]
end
To use it as an application, ensure it is started before your application and after all the applications required by your application:
def application do
[applications: [(...), :version_check]]
end
VersionCheck
owns its existence to the study and "code borrowing" from
Credo
's function that checks for updates.
Alexander de Sousa.
Yggdrasil
is released under the MIT License. See the LICENSE file for further
details.