/
htoad_pkg.erl
37 lines (31 loc) · 1.39 KB
/
htoad_pkg.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-module(htoad_pkg).
-include_lib("htoad/include/htoad.hrl").
-include_lib("htoad/include/toadie.hrl").
-include_lib("htoad/include/stdlib.hrl").
-export([ensure_package/3,
package_not_present/3, package_present/2]).
-export([format_package/1]).
-rules([package_present]).
package_present(Engine, {package_check,
#package{ ensure = present } = Package,
"present"}) ->
lager:debug("Package ~s is present, no action needed",[format_package(Package)]),
Engine.
ensure_package(Engine, #package{ ensure = present } = Package, Command) ->
lager:debug("Checking if package ~s is present",[format_package(Package)]),
htoad:assert(Engine,
[
Command,
htoad_utils:on({match,
[{{output, Command, '$1'},
[],
['$1']}]},
{package_check, Package, '_'})
]).
package_not_present(Engine, #package{} = Package, Command) ->
lager:debug("Package ~s is absent, installing",[format_package(Package)]),
htoad:assert(Engine, Command).
format_package(#package{ name = Name, version = undefined }) ->
Name;
format_package(#package{ name = Name, version = Version}) ->
io_lib:format("~s-~s",[Name, Version]).