69 lines
2.0 KiB
Plaintext
69 lines
2.0 KiB
Plaintext
|
#!/usr/bin/env escript
|
||
|
%% -*- erlang -*-
|
||
|
%%! -nocookie
|
||
|
|
||
|
-mode(compile).
|
||
|
|
||
|
main([Left, Right]) ->
|
||
|
{ok, LeftMetadata} = file:consult(Left),
|
||
|
{ok, RightMetadata} = file:consult(Right),
|
||
|
compare(LeftMetadata, RightMetadata),
|
||
|
halt();
|
||
|
main(_) ->
|
||
|
halt(1).
|
||
|
|
||
|
compare(LeftMetadata, RightMetadata) ->
|
||
|
[{application, LeftApp, LeftProps}] = LeftMetadata,
|
||
|
[{application, RightApp, RightProps}] = RightMetadata,
|
||
|
|
||
|
assert_equal(LeftApp, RightApp, "application name"),
|
||
|
|
||
|
LeftId = proplists:get_value(id, LeftProps),
|
||
|
RightId = proplists:get_value(id, RightProps),
|
||
|
case LeftId of
|
||
|
RightId ->
|
||
|
ok;
|
||
|
_ ->
|
||
|
io:format(standard_error,
|
||
|
"Warning:\t 'id' does not match (~p != ~p)~n", [LeftId, RightId])
|
||
|
end,
|
||
|
|
||
|
LeftPropsMap = proplists:to_map(proplists:delete(id, LeftProps)),
|
||
|
RightPropsMap = proplists:to_map(proplists:delete(id, RightProps)),
|
||
|
assert_equal(
|
||
|
lists:sort(maps:keys(LeftPropsMap)),
|
||
|
lists:sort(maps:keys(RightPropsMap)),
|
||
|
"app property keys"
|
||
|
),
|
||
|
[case K of
|
||
|
K when K =:= applications orelse K =:= modules ->
|
||
|
assert_equal(
|
||
|
lists:sort(maps:get(K, LeftPropsMap)),
|
||
|
lists:sort(maps:get(K, RightPropsMap)),
|
||
|
K
|
||
|
);
|
||
|
env ->
|
||
|
assert_equal(
|
||
|
proplists:to_map(maps:get(K, LeftPropsMap)),
|
||
|
proplists:to_map(maps:get(K, RightPropsMap)),
|
||
|
K
|
||
|
);
|
||
|
_ ->
|
||
|
assert_equal(
|
||
|
maps:get(K, LeftPropsMap),
|
||
|
maps:get(K, RightPropsMap),
|
||
|
K
|
||
|
)
|
||
|
end || K <- lists:sort(maps:keys(LeftPropsMap))],
|
||
|
ok.
|
||
|
|
||
|
assert_equal(Expected, Actual, Context) ->
|
||
|
case Actual of
|
||
|
Expected ->
|
||
|
ok;
|
||
|
_ ->
|
||
|
io:format(standard_error,
|
||
|
"Expected:\t~p~n But got:\t~p~n For:\t~p~n", [Expected, Actual, Context]),
|
||
|
erlang:error(assertion_failed)
|
||
|
end.
|