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
endIt is also possible to add VersionCheck to your required applications in
your mix.exs file i.e:
def application do
[applications: [:version_check]]
endThis 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"}]
endTo 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]]
endVersionCheck 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.